问题标签 [widechar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
8879 浏览

c++ - C++,WCHAR[] 到 std::cout 和比较

我需要将 WCHAR[] 放入 std::cout ...它是从 Native Wifi API 回调传递的 PWLAN_CONNECTION_NOTIFICATION_DATA 的一部分。

我尝试了简单的 std::cout << var; 但它会打印出第一个字符的数字地址。比较 ( var == L"some text") 也不起作用。调试器返回预期值,但比较返回 0。如何将此数组转换为标准字符串(std::string)?

提前致谢

0 投票
2 回答
1718 浏览

c - C/C++ I18N mbstowcs 问题

我正在致力于国际化 C/C++ 应用程序的输入。我目前遇到了从多字节字符串转换为宽字符串的问题。

代码需要跨平台兼容,所以我尽量使用mbstowcs和wcstombs。

我目前正在使用 WIN32 机器,并且已将语言环境设置为非英语语言环境(日语)。

当我尝试转换多字节字符串时,我似乎遇到了一些转换问题。

以下是代码示例:

执行结束时,宽字符串不包含转换后的数据。我认为代码页设置存在问题,因为当我使用 MultiByteToWideChar 并发送当前代码页时

例如:MultiByteToWideChar(CP_ACP, 0, mbsVal, -1, wcsVal, size + 1); 代替 mbstowcs 调用,转换成功。

我的问题是,如何使用通用 mbstowcs 调用而不是 MuliByteToWideChar 调用?

0 投票
1 回答
601 浏览

c++ - 如何测试字符串是否具有特定的 unicode char?

假设您有一个接收参数的命令行可执行文件。此执行程序已准备好宽字符,您想测试其中一个参数是否以 HYPHEN 案例开头,其中它是一个选项:

命令 -o foo

如果您不知道主机使用的字符集,您如何在代码中对其进行测试?给定的控制台应该不可能由widechar 森林中的另一个字符生成相同的连字符表示吗?(在这种情况下,它将是一个野生字符:P)

0 投票
1 回答
6297 浏览

c++ - C++:宽字符输出不正确?

我的代码基本上是这样的:

我希望使用宽字符串,但我不知道它们是如何输出的,所以我使用了 wprintf。当我运行诸如:

十六进制代码点创建了这个:

为什么他们都按顺序跳?我的意思是如果 wprintf 是错误的,我仍然不明白为什么它会以如此特定的混乱顺序输出!

编辑:字节序还是什么?他们似乎每两个字符旋转一次。嗯。

编辑 2:我尝试使用 wcout,但它输出完全相同的十六进制代码点。奇怪的!

0 投票
1 回答
1947 浏览

c++ - 如何将 wchar_t 转换为 int 以显示代码点?

我的程序中有一个简单的函数,当我想弄乱 unicode 并用它做一些事情时。在这个函数中,我希望显示用户输入的字符的代码值。似乎有可能,这是我的功能:

现在如您所见,我只想显示整数值(如 ascii 字符,例如(int) "a"),但类似的listcode(L"&")内容将显示为&: &!

不可能找到像这样的宽字符的整数值吗?

0 投票
1 回答
1482 浏览

c++ - 使用带有 clang 的宽字符常量获取“宽字符常量中的无关字符被忽略”错误

我最近决定从 gcc 切换到 clang,并且由于我使用宽字符常量而收到以下警告:“被忽略的宽字符常量中的无关字符”。以下是收到警告的代码:

在这里,case 条件中的字符都是高 unicode 字符,因此显然被 clang 解析器视为多字节字符(源代码是 UTF-8 编码的)。

我的问题是警告信息背后的含义是什么。也就是说,究竟是什么被忽略了。另外,鉴于此警告,我的程序会按设计工作吗?

gcc 没有对此代码发出任何警告,并且一切都像魅力一样工作。

0 投票
2 回答
2888 浏览

c++ - WideCharToMultiByte 问题

0 投票
4 回答
3022 浏览

c - qsort 的第四个参数的“不兼容的指针类型”编译器警告

我正在尝试使用标准库qsort对宽字符数组进行排序:

现在我认为所涉及的函数有这些原型:

结果完全符合预期,但为什么我会收到编译器警告passing argument 4 of ‘qsort’ from incompatible pointer type?我怎样才能铸造wcscoll以适应原型?

如果我定义并传入一个单独的比较函数,警告就会消失:

...但是当参数不是 type 时,这个看起来应该有错误处理wchar_t *

0 投票
8 回答
41718 浏览

java - 为什么 Java char 原语会占用 2 个字节的内存?

为什么 Java char 原始数据类型是 2 个字节,而 C 是 1 个字节,有什么理由吗?

谢谢

0 投票
2 回答
18421 浏览

c++ - UNICODE 字符数据的 _T( ) 宏更改

我有 UNICODE 应用程序,其中我们使用 _T(x) 定义如下。

我知道 L 被定义为 wchar_t,在任何平台上都是 4 个字节。如果我错了,请纠正我。我的要求是我需要 L 为 2 个字节。因此,作为编译器破解,我开始使用 -fshort-wchar gcc 标志。但是现在我需要将我的应用程序移到 zSeries 上,在该平台上我看不到 -fshort-wchar 标志的效果。

为了让我能够在 zSeries 上移植我的应用程序,我需要修改 _T( ) 宏,即使在使用 L ##x 并且不使用 -fshort-wchar 标志之后,我也需要获得 2 字节宽的字符数据。有人可以告诉我如何更改 L 的定义,以便在我的应用程序中始终将 L 定义为 2 个字节。