问题标签 [unicode-string]

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 投票
7 回答
7467 浏览

c++ - 是否有正确处理 Unicode 的 STL 字符串类?

我对 std::string 和 std::wstring 了如指掌,但他们似乎并没有完全关注 UTF-8 和 UTF-16 的扩展字符编码(至少在 Windows 上)。也不支持 UTF-32。

那么有人知道提供完整 UTF-8、UTF-16 和 UTF-32 支持的跨平台插入式替换类吗?

0 投票
5 回答
8275 浏览

java - Java:如何从字符串“\u00C3”等创建 unicode

我有一个文件,其中包含手动键入为 \u00C3 的字符串。我想在java中创建一个由该unicode表示的unicode字符。我试过但找不到方法。帮助。

编辑:当我阅读文本文件时,字符串将包含“\u00C3”,而不是 unicode,而是 ASCII 字符 '\' 'u' '0' '0' '3'。我想从那个 ASCII 字符串中形成 unicode 字符。

0 投票
2 回答
1198 浏览

c++ - 是否有可以在 Win32 和 MacOSX 系统上使用的跨平台 unicode 字符串类?

我还需要区域设置感知大小写转换。.NET 做得很好。我们 C++ 程序员必须等待 100 年才能得到这样的东西吗?我知道 ICU 库,但它是 20MB,我什至无法将我的代码与它链接起来......总而言之,我想结束这个噩梦......

0 投票
4 回答
738 浏览

unicode - 将 UTF-16 视为固定的 16 位编码会出现什么问题?

我正在阅读一些关于 Unicode 的 SO 问题,其中有一些我不完全理解的评论,比如这个:

Dean Harding:UTF-8 是一种可变长度编码,处理起来比固定长度编码更复杂。另外,请参阅我对 Gumbo 回答的评论:基本上,所有编码(UTF-8、UTF-16 和 UTF-32)中都存在组合字符,它们需要特殊处理。您可以使用与组合字符相同的特殊处理方法来处理 UTF-16 中的代理项对,因此在大多数情况下,您可以忽略代理项并将 UTF-16 视为固定编码。

我对最后一部分(“大部分”)有点困惑。如果 UTF-16 被视为固定的 16 位编码,这会导致什么问题?BMP 之外有字符的可能性有多大?如果有,如果您假设使用两字节字符,这会导致什么问题?

我阅读了关于代孕的维基百科信息,但它并没有真正让我更清楚!

编辑:我想我真正的意思是“为什么有人建议将 UTF-16 视为固定编码,而它似乎是假的?”

编辑2:

我在“有什么理由比 UTF-8 更喜欢 UTF-16? ”中发现了另一条评论,我认为这更好地解释了这一点:

Andrew Russell:为了性能:UTF-8 比 UTF-16 更难解码。在 UTF-16 中,字符要么是基本多语言平面字符(2 个字节),要么是代理对(4 个字节)。UTF-8 字符可以是 1 到 4 个字节之间的任意位置

这表明要提出的观点是 UTF-16 不会有任何三字节字符,因此通过假设 16 位,您不会因为结束一个字节而“完全搞砸”。但我仍然不相信这与假设 UTF-8 是单字节字符有什么不同!

0 投票
2 回答
1338 浏览

python - 某些字符(商标符号等)无法写入文件但可在屏幕上打印

我一直在尝试从网站上抓取数据并将找到的数据写到文件中。超过 90% 的时间,我不会遇到 Unicode 错误,但是当数据具有以下字符(例如“汉堡王®,汉斯咖啡馆”)时,它不喜欢将其写入文件,因此我的错误处理打印它按原样显示在屏幕上,没有任何进一步的错误。

我已经尝试过编码和解码功能以及各种编码,但无济于事。

请在下面找到我编写的当前代码的摘录:

0 投票
3 回答
2879 浏览

java - 在 Java / Scala 中将 Unicode (CJK ExtB) 字符转换为十进制 NCR

我正在尝试将包含 CJK ExtB 计划中的 Unicode 字符的 Java 字符串转换为十进制 NCR。

例如(您可以尝试使用http://people.w3.org/rishida/tools/conversion/):

  • “游钖堃”应转换为游鍚堃
  • “怀”应该转换为𧦧懷

这是我尝试过的(在 Scala 中):

如您所见,它在第一种情况下正确转换,将三个 unicode 字符转换为三个 NCR。

但是在第二种情况“怀”中,只有两个unicode字符,但是Java/Scala似乎认为它是一个包含三个字符的字符串。

那么,这里发生了什么,我怎样才能像我提到的网站上的转换器一样正确转换第二种情况?非常感谢。

更新:

  • 我的源代码文件使用的是 UTF-8。
  • 这是 "怀".toCharArray() 的结果
    • char[] = ?, char.toInt = 55390
    • char[] = ?, char.toInt = 56743
    • char[] = 懷, char.toInt = 25079

现在我想我知道发生了什么。字符“”在 UTF-16 中编码为 0xD85E 0xDDA7,是 4 个字节而不是 2 个字节。所以转换为char数组时需要2个元素,其中数据类型char只能表示2个字节。

0 投票
3 回答
6365 浏览

java - Java Unicode 字符串排序

在 Java 中,如何比较 Unicode 字符串?

我的意思是,如果我有几个说日文字符串,当我执行以下操作时:

这些字符串如何进行比较和排序?

0 投票
1 回答
1902 浏览

unicode - 通过 FTP 将 ANSI 字符串写入 Unicode 文件

我有以下 Visual Basic 6.0 函数,它通过 FTP 将 ANSI 字符串写入新文件。我希望它将文件写为 UTF-16LE。在以下方法中是否有任何好的方法可以做到这一点?

我已经有大约 10 年没有做过 Visual Basic 6.0 了,所以我充其量只是摇摇晃晃。任何投入将不胜感激。

这是 apiInternetWriteFile 声明;

0 投票
1 回答
1088 浏览

c++ - 在 ICU UnicodeString 中 countChar32() 和 length() 有什么区别?

来自文档;

长度是 UnicodeString 中 UChar 代码单元的数量。如果您想要代码点的数量,请使用 countChar32()。

计算字符串长度 UChar 代码单元中的 Unicode 代码点。

一个代码点可以占用一个或两个 UChar 代码单元。计算代码点涉及读取所有代码单元。

由此我倾向于认为代码点是一个实际的字符,而代码单元只是字符的一个可能部分。

例如。

假设您有一个 unicode 字符串,例如:

'foobar'

长度和 countChar32 均为 6。然后假设您有一个由 6 个字符组成的字符串,该字符串采用完整的 32 位来编码长度为 12,但 countChar32 为 6。

它是否正确?

0 投票
1 回答
553 浏览

nhibernate - 休眠禁用Unicode

在我们公司,我们使用 nhibernate 作为我们的默认映射器。我使用 nhibernate 标准编写查询 - 我注意到所有参数都以 unicode 形式发送,如下所示:

这不是期望的行为。是否可以在休眠查询中禁用 unicode?谢谢

罗梅克