问题标签 [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 投票
2 回答
38 浏览

c - wcscoll 返回与预期不同的结果

考虑这段代码:

输出是

但我希望它是-1,因为 ą 就在波兰字母表中的 b 之前。为什么返回 158?如果不是这样,怎么能按字母顺序比较单词呢?

0 投票
1 回答
1818 浏览

c++ - 尝试释放 wchar_t 指针时堆损坏

这是一个评估宽字符串是 L"false" 还是 L"true" 的代码,但是当我尝试运行它时,它在尝试释放重复的字符串指针“HEAP CORRUPTION DETECTED: after Normal”时给了我这个错误block(#135756) at 0x00000000002EB3A0。CRT 检测到应用程序在堆缓冲区结束后写入内存。”。

这是内联代码:

在 free 语句之前,所有字符串指针似乎都可以。我确信我犯了一些严重的错误,仅仅是因为我能够破坏堆。

编译器:Microsoft Visual Studio 2015 RC

处理器:Inter Core i5-3450 3.10 GHz

0 投票
1 回答
1132 浏览

c++ - Linux宽字符串到多字节问题

我知道关于这个话题已经有很多问题了,但我在这里面临着一个非常不寻常的情况。

我在 Centos 工作。我的应用程序读取 wchar_t 中的一些数据并转换为多字节(UTF-8 编码)并在 google proto 消息中填充 char 缓冲区并发送到另一个应用程序。

另一个应用程序将其再次转换为宽字符串并将其显示给用户。我正在使用 wcstombs 进行转换。我的语言环境是“en_US.UTF-8”。

对于某些字符串,它工作正常。我在 wcstombs 返回-1的一个特定宽字符串(可能还有其他几个)中面临问题。错误号设置为 84(无效或不完整的多字节或宽字符)。

问题是,当我通过 eclipse 运行我的应用程序时,转换是成功的,但是当我的应用程序从 root(作为服务)运行时,转换失败。

使用widechartomultibyte API 在windows 中相同的字符串转换是成功的。

我无法理解为什么会这样。

希望高手能帮帮我。

编辑

我的宽字符串是 L"\006£æ?Jÿ" 转换并显示给用户时变成图像在此处输入图像描述

0 投票
0 回答
303 浏览

c++ - 将字符串中的单个“字符”与宽字符进行比较

我有一个包含 unicode 字符的字符串(我不知道我是否使用了正确的命名法)。我可以逐个字符地查看,但我无法直接与之比较:

寻找宽字符存在的正确方法是什么?

这里是 MWE,尝试将字符与例如“α”进行比较时出现错误。

我在 Linux 中使用 clang 3.5。

我想要做的是(复制)用一个单词替换一个字符。我可以使用正则表达式,但这似乎有点矫枉过正。

0 投票
4 回答
1759 浏览

c++ - 在“字符类型”模板类中使用字符串文字

我在 C++ 中有一个模板类,它将char_type字符类型作为模板参数,例如char, wchar_t,char32_t等......然后std::basic_string<char_type>在代码中使用该类。

然后在课堂上的某个地方,我填写了一个转义序列表,例如"&amp;". 这不起作用,因为取决于模板字符类型,我们需要使用"&amp;", L"&amp;", U"&amp;"...

有没有办法避免专门用于初始化表的模板函数,例如使用一些标准函数来转换字符串文字?

由于这些是转义序列,它们除了 ASCII 字符之外不包含任何其他内容。

0 投票
0 回答
305 浏览

visual-studio - WideCharToMultiByte 写入寄存器时产生汉字

我有一段古老的 IE BHO 代码,我正在尝试为它存储一些数据。

我正在尝试这种方法:

我输入的值被写入,可以成功读取。但是,当我在 regedit 中查看时,我看到的是汉字。这将使故障排除具有挑战性,因此我希望正确书写字符。

这显然是某种编码问题,但我似乎找不到解决它的灵丹妙药。

谢谢!

0 投票
2 回答
537 浏览

c++ - WideCharToMultiByte 标准模拟 UTF8

这段代码对我来说正常工作:

我想知道这段代码的跨平台模拟。我期待std::wcstombswith std::codecvt_utf8,但无法猜测如何以正确的方式使用它。

0 投票
3 回答
666 浏览

c++ - char, wchar_t, char16_t, char32_t 的尺寸订购保证

charC++ 标准是否对, wchar_t, char16_t,的字节大小排序提供任何保证char32_t?(欢迎从标准中提取任何内容)

例如,我是否可以保证:

0 投票
1 回答
93 浏览

c++ - 获取最后一个错误的宽字符版本?

这是微软的代码

我为 NTstatus 添加了一个部分并将 arg 更改为 LPCWSTR。它基本上没有功能,因为只是在 LPVOID 类型上更改为 StringCchPrintfW 段错误。有什么方法可以使它对宽字符友好?

0 投票
3 回答
1039 浏览

c - 我如何保证终端具有 NCURSES 的 Unicode/宽字符支持?

我正在为一个小 TUI(文本用户界面)练习开发一个 NCURSES 应用程序。不幸的是,我没有选择使用永远如此美妙和忠实的 ASCII。我的程序使用了很多 Unicode 方框图字符。

我的程序已经可以检测到终端是否具有颜色功能。我需要做类似的事情:

这不仅仅是简单地包含ncursesw和设置语言环境的问题。我需要获取特定的终端信息,如果它不会发生,实际上会抛出一个错误。例如,当用户尝试以可爱的XTerm而不是支持 Unicode 的UXTerm.