- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下程序在 HPUX 上返回不正确的值 {-1,0,-1},而如果我在 Linux 上运行相同的程序,它对于区域设置“de_DE.iso885915@euro”可以正常工作。 HPUX wcwidth、iswprint 和 wcswidth 是否存在任何问题。
int main ()
{
wchar_t str[2];
wchar_t ch = 8364; /* Euro sign */
str[0] = ch;
str[1] = '\0';
/* Locale set to de_DE.iso885915@euro before running this program */
setlocale(LC_ALL, "");
printf ("%d\n", wcwidth(ch));
printf ("%d\n", iswprint(ch));
printf ("%d\n", wcswidth(str, 2));
return 0;
}
最佳答案
HPUX 可能不使用 Unicode 作为 wchar_t
的编码,而是简单地将 8 位 char
值存储在 32 位 wchar_t
使用 8 位语言环境时。这是一种丑陋的老式做法,现在普遍不受欢迎,但根据 C 标准,它是合法的,事实上 C 标准允许并鼓励实现提供预定义的宏 __STDC_ISO_10646__
来指示 wchar_t
值是 Unicode。如果您尝试切换到基于 UTF-8 的区域设置并且问题消失,则几乎可以肯定这就是您遇到的问题。
关于c - HPUX 上的 wcwidth 问题 : Internationalization and Localization Issue on HPUX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11263648/
我试图找出 wcwidth() 参数的预期编码是什么。手册页对此一无所知,我浪费了几个小时试图找出它是什么。这是一个例子,在 C 中: #include #include void main()
POSIX 函数 wcwidth() 计算在终端上打印时给定 wchar_t 的宽度。例如,wcwidth(L'A') 返回 1,wcwidth(L'字') 返回 2等。还有一个函数 wcswidth
为什么这里 wcwidth 返回“-1”(不是可打印的宽字符)宽度“°”(0x0524)? #include #include #include int wcwidth(wchar_t wc);
以下程序在 HPUX 上返回不正确的值 {-1,0,-1},而如果我在 Linux 上运行相同的程序,它对于区域设置“de_DE.iso885915@euro”可以正常工作。 HPUX wcwidth
我是一名优秀的程序员,十分优秀!