问题标签 [utf-16]

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 回答
25619 浏览

php - 如何在 PHP 中将 utf-8 字符串转换为 utf-16 字符串

如何在 PHP 中将 utf-8 字符串转换为 utf-16 字符串?

0 投票
5 回答
27317 浏览

string - UTF8 与 UTF16 与 char* 与什么?有人给我解释一下这个烂摊子!

我已经设法几乎忽略了所有这些多字节字符的东西,但现在我需要做一些 UI 工作,我知道我在这方面的无知会赶上我!谁能在几段或更少的段落中解释我需要知道的内容,以便我可以本地化我的应用程序?我应该使用什么类型(我同时使用 .Net 和 C/C++,对于 Unix 和 Windows,我都需要这个答案)。

0 投票
6 回答
10242 浏览

c++ - 以二进制模式将 utf16 写入文件

我正在尝试以二进制模式将 wstring 写入文件,但我认为我做错了。这是我尝试过的:

在例如 Firefox 中打开 test.txt 并将其编码设置为 UTF16,它将显示为:

嘿嘿嘿</p>

谁能告诉我为什么会这样?

编辑:

在十六进制编辑器中打开文件我得到:

看起来我因为某种原因在每个字符之间得到了两个额外的字节?

0 投票
5 回答
5488 浏览

c - UNICODE_STRING 到 Null 终止

我需要将 UNICODE_STRING 结构转换为简单的 NULL TERMINATED STRING。

我在 MSDN 上找不到关于它的干净解决方案。有人去过吗?我没有使用 .net,所以我需要一个原生 API 解决方案。

非常感谢!

0 投票
6 回答
33647 浏览

windows - UTF-16 到 UTF-8 的转换(用于 Windows 中的脚本)

将 UTF-16 文件转换为 UTF-8 的最佳方法是什么?我需要在 cmd 脚本中使用它。

0 投票
5 回答
34773 浏览

c++ - 如何将 Unicode 字符串转换为 utf-8 或 utf-16 字符串?

如何将 Unicode 字符串转换为 utf-8 或 utf-16 字符串?我的 VS2005 项目使用 Unicode 字符集,而 cpp 中的 sqlite 提供

用于打开文件夹。如何将字符串、CString 或 wstring 转换为 UTF-8 或 UTF-16 字符集?

非常感谢!

0 投票
8 回答
5340 浏览

delphi - 为什么 Delphi 中的字符串内存过多?

我正在阅读一个包含 140 万行、大小为 24 MB(平均每行 17 个字符)的大型文本文件。

我使用的是 Delphi 2009,文件是 ANSI,但在读取时会转换为 Unicode,因此您可以说转换后的文本大小为 48 MB。

(编辑:我发现了一个更简单的例子......)

我将此文本加载到一个简单的 StringList 中:

我发现这些数据行似乎比它们的 48 MB 占用更多的内存。

事实上,它们使用 155 MB 内存。

我不介意 Delphi 使用 48 MB 甚至高达 60 MB 的内存管理开销。但是 155 MB 似乎过多。

这不是 StringList 的错。我之前尝试将这些行加载到记录结构中,并且得到了相同的结果(160 MB)。

我没有看到或理解是什么导致 Delphi 或 FastMM 内存管理器使用 3 倍于存储字符串所需的内存量。堆分配不可能那么低效,不是吗?

我已经对此进行了调试并尽可能地对其进行了研究。任何关于为什么会发生这种情况的想法,或者可能帮助我减少过度使用的想法将不胜感激。

注意:我以这个“较小”的文件为例。我真的想加载一个 320 MB 的文件,但 Delphi 要求超过 2 GB 的 RAM 并且由于这个多余的字符串要求而耗尽内存。

附录:Marco Cantu 刚刚发表了一份关于 Delphi 和 Unicode 的白皮书。Delphi 2009 将每个字符串的开销从 8 个字节增加到 12 个字节(对于指向字符串的实际指针,可能还要增加 4 个字节)。每 17x2 = 34 字节的行额外增加 16 字节几乎增加了 50%。但我看到超过 200% 的开销。额外的 150% 可能是什么?


成功!!感谢大家的建议。你们都让我思考。但我必须感谢 Jan Goyvaerts 的回答,因为他问:

...你为什么要使用 TStringList?文件真的必须作为单独的行存储在内存中吗?

这使我找到了一个解决方案,即我可以将我的行分组到我的程序知道的自然组中,而不是将 24 MB 文件作为 140 万行 StringList 加载。因此,这导致将 127,000 行加载到字符串列表中。

现在每行平均 190 个字符而不是 17 个。每个 StringList 行的开销是相同的,但现在行数要少得多。

当我将此应用到 320 MB 文件时,它不再耗尽内存,现在加载不到 1 GB 的 RAM。(而且加载只需要大约 10 秒,相当不错!)

解析分组的行会有一点额外的处理,但在每个组的实时处理中应该不明显。

(如果您想知道,这是一个家谱程序,这可能是我需要让它在不到 30 秒的时间内将大约 100 万人的所有数据加载到 32 位地址空间中的最后一步。所以我我们仍然有 20 秒的缓冲时间来将索引添加到数据中,这将需要允许显示和编辑数据。)

0 投票
1 回答
20092 浏览

actionscript-3 - 有什么方法可以将 ActionScript 3 中的常规字符串转换为 Latin-1 字符代码的 ByteArray?

我将字符串转换为 UTF-16 编码字符的 byteArray 没有问题,但是我尝试与之通信的应用程序(用 Erlang 编写)只理解 Latin-1 编码。有什么方法可以从 Actionscript 3 中的字符串生成一个充满 Latin-1 字符代码的 byteArray?

0 投票
7 回答
16079 浏览

unicode - 自动检测字符编码 (UTF-16) 的 findstr 或 grep

我想做这个:

或 grep 等价物

但我需要该实用程序来自动检测以 UTF-16(和朋友)编码的文件并适当地搜索它们。我的文件中甚至还有字节排序标记 FFEE,所以我什至不寻找英雄的自动检测。

有什么建议么?


我指的是 Windows Vista 和 XP。

0 投票
8 回答
32802 浏览

xml - 将 UTF8 数据导出到 Excel 的最佳方法是什么?

所以我们有这个支持 UTF8 数据的网络应用程序。万岁UTF8。我们可以将用户提供的数据导出到 CSV 中,这没有问题——那时它仍然是 UTF8。问题是,当您在 Excel 中打开一个典型的 UTF8 CSV 时,它会将其读取为 ANSII 编码的文本,并因此尝试将 ø 和 ü 等两字节字符作为两个单独的字符读取,而您最终会失败。

所以我做了一些挖掘(Intervals 的人在这里有一篇关于它的有趣帖子),并且有一些有限的,如果可笑的烦人的选项。其中:

  • 提供 Excel 将正确解释但不支持多行数据的 UTF-16 Little Endian TSV 文件
  • 提供具有 Excel mime 类型或文件扩展名的 HTML 表中的数据(不确定此选项是否支持 UTF8)
  • 有大约三到四种方法可以将 XML 数据导入到各种最新版本的 excel 中,理论上这些方法都支持 UTF8。SpreadsheetML,使用自定义 XSLT,或通过模板生成新的 Excel XML 格式。

看起来无论如何,我可能会继续为那些不使用 Excel 的人提供一个普通的旧 CSV 文件,并为 Excel 提供一个单独的下载选项。

亲爱的 Stack Overflowers,生成正确支持 UTF8 的 Just-For-Excel 文件的最简单方法是什么?如果这个最简单的选项只支持最新版本的 Excel,那仍然很有趣。

我在 Rails 堆栈上执行此操作,但很好奇 .Net-ers 和任何框架上的人员如何处理此问题。我自己在几个不同的环境中工作,这绝对是一个会再次出现的问题。

2010-10-22 更新:当我第一次发布这个问题时,我们一直在我们的时间跟踪系统Tempo中使用 Ruport gem来提供 CSV 导出。我的一位同事 Erik Hollensbee 为 Ruport 提供了一个快速过滤器,为我们提供了实际的 Excel XSL 输出,我想我会在这里与任何其他 ruby​​ 专家分享: