问题标签 [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 回答
1515 浏览

unicode - 发生系统间缓存意外错误:

我正在尝试将旧的 CACHE.DAT 数据库加载到 Intersystems Cache(2012.1.1 win32 评估)中。我设法创建了一个命名空间和数据库,并且能够查询一些数据库表。

但是,对于其他表,我收到以下错误:

文档告诉我,这意味着在需要一个字节字符的地方读取一个多字节字符。我怀疑这可能意味着原始数据库是 UTF-16,而我的新安装使用的是 UTF-8。

我的问题是:有没有办法转换数据库,配置缓存以便它可以处理,或者以另一种方式处理这个问题?

0 投票
2 回答
56603 浏览

c - C语言中的“宽字符串”是什么?

我在书中遇到了这个:

其中第一个参数的类型为wchar_t *.

这与scanf("%lf", &variable);第一个参数的类型不同char *

那么有什么区别呢。我以前从未听说过“宽字符串”。我听说过一种叫做 Raw String Literals 的东西,它按原样打印字符串(不需要转义序列之类的东西),但这不在 C 语言中。

0 投票
3 回答
1868 浏览

c++ - 从包含 utf-8(HINDI) 格式文本的文件中读取并写入另一个文件

我正在尝试从文件中读取字符并在删除标点符号后。我想将单词存储在一个数组中,最后将它们写入另一个文件。该文件的内容是:-

यौताबाबूउदयभाहूउपेक्षाऔंरअपमान्नकीपीड््ाढोये जैसेतैस्येवहबाबाकेआश्रमम्पेंपहैचगया 。बाबामान्नोउसीकीप्रतीक्षाम्पेंवैठेथे。वहज्योहीदण्डवतकीमुदाम्पेंहुभ्रात्योंही बाबाकागभ्रीरस्वरउसकेकानोंम्पेटकराया 'आभ्रो,ञैंतुम्हारेलिएहीबैठाहूें 'अमितन्नेमस्तकऊैंचाउठायाऔंरएकाम्रभाव न्सेबाबाकोदेखतारहा 。बाबाकेपासवहअनेकोंबारआचुका थापरन्तु 。आजजैसीव्यथा,थकान्नऔंरप्तानताइससेदूर्वनहींथीआदमी कभ्रीकभीइतनाटूटञाताड़ँकिठसेअपनेअस्तिल्दकेप्रति भलगतीलगतीलगतीवहवहखोपेंपेंपेंखोउसकेउसकेउसकेकौकौकौकौहेहेहेहेथेथे ...........

我尝试使用旧的 turbo c++ 读取这些字符(印地语 - utf-8)。使用简单的 char数据类型

程序已编译,但内容未正确写入文件。然后我在visual c++中使用相同的代码和相同的代码,我得到了错误——

"Debug assertion failed ... unsigned(c+1) <=256"

接下来我尝试为此目的使用宽字符数据类型。using<wchar.h><cwchar.h>头文件和数据类型wchar_t和其他宽字符函数,但输出仍然不正确 - “���त�ྤ���௤ྤ�”

是否有任何替代方法或任何其他方法来解决此问题。

用完整的代码段回答还告诉我 wchar 的 getline 函数的替代方法是什么。这就是我试图做的......

0 投票
2 回答
295 浏览

c++ - 将多字符串复制到缓冲区中

我正在使用一个 windows-api,它返回一个宽字符多字符串作为结果。结果与以下相同:

是否有任何标准功能或良好的性能解决方案可以将此结构复制到缓冲区?

0 投票
2 回答
2021 浏览

c - 使用 wchar.h 比较 UTF-8 字符时遇到问题

我正在制作一个小程序来读取一个文件,该文件包含 UTF-8 元素,一个字符一个字符。读取一个字符后,它将它与其他几个字符进行比较,如果匹配,它将文件中的字符替换为下划线“_”。

(嗯,它实际上复制了那个文件,用下划线替换了特定的字母。)

我不确定我到底在哪里搞砸了,但它很可能无处不在。

这是我的代码:

我省略了与文件名生成有关的代码,因为它对案例没有任何帮助。这只是字符串操作。

如果我给这个程序提供一个包含γειά σου κόσμε.我希望它返回的单词的文件: γει_ σου κόσμ_.

搜索互联网并没有太大帮助,因为大多数结果非常笼统或谈论关于 UTF-8 的完全不同的事情。就像没有人出于某种原因需要操纵单个字符。

任何指出我正确方法的东西都是最受欢迎的。我不一定要寻找我提交的代码的简单固定版本,如果有任何有见地的评论帮助我理解 wchar 机制的工作原理,我将不胜感激。整个 wbyte、wchar、L、no-L,对我来说都是一团糟。

预先感谢您的帮助。

0 投票
1 回答
5131 浏览

winapi - C++ Builder XE2:如何将字符串转换为 wchar_t*

我有 SHBrowseForFolder 弹出并工作正常,但我想设置标题。我知道它必须是 wchar_t* 并且当我使用像 (wchar_t*)L"My Title" 这样的 const 时,标题显示正确。

但是如果我尝试使用字符串值,我只会得到第一个字母“M”,就像宽字符串再次转换为新的宽字符串一样,用 nul 填充每个字符。

UnicodeString的所有转换函数的文档c_str()t_str()w_str()返回一个wchar_t*但声明显示WideChar*

任何想法如何使此代码与字符串一起工作?

0 投票
1 回答
1721 浏览

utf-8 - Linux 上用于 UTF 转换的 MultiByteToWideChar / WideCharToMultiByte 实现

我正在开发使用 MultiByteToWideChar() 和 WideCharToMultiByte() 函数将 UTF-8 转换为 UTF-16 的应用程序,反之亦然。我的工作目的是将该应用程序从 Windows 移植到 Linux。由于这些函数在整个代码中被广泛使用,我想尽量减少之后的代码更改。不幸的是我有一个限制 - 不能使用像 Wine 这样的开源库,所以我基本上是在寻找一个很好的算法,用于将多字节 UTF-8 字符串转换为 UTF-16 宽字符串(反之亦然),该算法适用于 32\ 64 位 Linux 并且仅使用标准 Linux C 库。

有人可以推荐我可以使用的适当算法或标准实现。

0 投票
4 回答
4141 浏览

c++ - C++ 文件 IO:读取和写入 16 位字

我想将非 Unicode 的 16 位字写入文件,稍后再读回。我知道通过一些字节操作我可以在char模式下使用fstream::read()and来做到这一点fstream::write()。我需要做什么才能直接使用 16 位字?

例如,似乎我应该能够执行以下操作:

gcc 4.4 输出:

VC++10 输出:

我也尝试过使用std::basic_filebuf<uint16_t>直接并得到相同的结果。为什么?

0 投票
0 回答
383 浏览

android - 静态库中的 Android Crystax NDK 宽字符函数

我使用 Crystax NDK,我有 2 个生成静态库 (libA.a) 和共享库 (libB.so) 的文件。模块 B 依赖于模块 A(由 B 的 make 文件中的 LOCAL_STATIC_LIBRARIES 反映)。
在模块 A 的代码中,我调用了 swscanf,它总是返回 -1。

我发现这个问题的解决方法很奇怪:如果我在模块 B 的代码中的某处添加对 swscanf 的调用,那么 swscanf 开始在任何地方都可以正常工作 - 在模块 B 和模块 A 中(即使我没有更改模块 A 的代码)。

我最好的猜测是链接的问题:如果我在顶级共享库中没有宽字符函数调用,那么链接器使用默认的 Google NDK 的函数实现。

请指教。

0 投票
1 回答
240 浏览

ios - iOS 中的 iswalpha() 在 iOS 上返回的值与在 MacOS 上不同

iswalpha()我在 iOS 上有一个问题。

我正在 Xcode 4.5 中调整我的应用程序,并尝试将西班牙语字符传递úiswalpha(). xcode 显示的 int 值为ú250。

当我尝试在真实设备上运行应用程序时,iswalpha()返回 0;但在模拟器中(我在 10.8.2 的 MacBook Air 上运行 Xcode)它返回 1。

我想原因可能是 iOS 的宽字符实现与 MacOS 不同。解决此问题的最佳方法是什么?

增强的细节: 西班牙字符的 UTF-16(unicode)编码ú在 int 值中是 250。我认为 iswalpha() 应该像 MACOS 一样返回 1,而不是在 iOS 中返回 0。

Dam 新用户无法在此处发布图片。所以对于UTF-16编码ú请参考: http ://www.fileformat.info/info/unicode/char/fa/index.htm