gpt4 book ai didi

c - HPUX 上的 wcwidth 问题 : Internationalization and Localization Issue on HPUX

转载 作者:行者123 更新时间:2023-11-30 15:56:27 25 4
gpt4 key购买 nike

以下程序在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com