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

unicode - UTF-8、UTF-16 和 UTF-32

UTF-8、UTF-16 和 UTF-32 之间有什么区别?

我知道它们都将存储 Unicode,并且每个都使用不同数量的字节来表示一个字符。选择一个比另一个有优势吗?

0 投票
3 回答
4443 浏览

.net - 你是如何让 ASP.NET 输出 UTF-16 编码的文本的?

你是如何让 ASP.NET 输出 UTF-16 编码的文本的?

我在 .NET 中序列化一个默认为 UTF-16 格式的对象。现在我想将字符串作为输出响应发送给 .ashx 请求。

我收到错误:不支持从当前编码切换到指定编码。错误处理资源

如何告诉我的网站或页面使用 UTF-16 格式。

谢谢。

更新:阅读两个答案。

0 投票
7 回答
4358 浏览

.net - 是否有将二进制数据打包成 UTF-16 字符串的标准技术?

(在 .NET 中)我将任意二进制数据存储在byte[](例如图像)中。现在,我需要将该数据存储在一个字符串中(遗留 API 的“注释”字段)。是否有将这种二进制数据打包字符串的标准技术?通过“打包”,我的意思是对于任何相当大的随机数据集,bytes.Length/2与packed.Length 大致相同;因为两个字节或多或少是一个字符。

两个“明显”的答案不符合所有标准:

没有非常有效地使用字符串,因为它只使用大约 60,000 个可用字符中的 64 个字符(我的存储是System.String)。一起去

更好地利用了string,但它不适用于包含无效 Unicode 字符的数据(比如不匹配的代理对)。 这篇 MSDN 文章展示了这种精确(差)的技术。

让我们看一个简单的例子:

在这种情况下bytesutf16_bytes是相同的,因为原始字节是 UTF-16 字符串。使用 base64 编码执行相同的过程会得到 16 个成员的base64_bytes数组。

现在,使用无效的 UTF-16 数据重复该过程:

您会发现utf16_bytes与原始数据不匹配。

我编写了在无效 Unicode 字符之前使用 U+FFFD 作为转义的代码;它有效,但我想知道是否有比我自己制作的更标准的技术。更不用说,我不喜欢将DecoderFallbackException作为检测无效字符的方式。

我想您可以将其称为“基本 BMP”或“基本 UTF-16”编码(使用 Unicode 基本多语言平面中的所有字符)。是的,理想情况下,我会遵循Shawn Steele 的建议并传递byte[]


我将接受 Peter Housel 的建议作为“正确”答案,因为他是唯一一个接近建议“标准技术”的人。


编辑base16k 看起来更好。Jim Beveridge 有一个实现

0 投票
6 回答
91626 浏览

unicode - Big Endian 和 Little Endian 字节顺序的区别

Big Endian 和 Little Endian Byte order 有什么区别?

这两者似乎都与 Unicode 和 UTF16 有关。我们究竟在哪里使用它?

0 投票
1 回答
10045 浏览

sql-server - SQL Server Management Studio - 网格结果另存为 .CSV - 如何输出文本而不是 UTF-16 (Unicode)

在 SQL Server Management Studio 中,是否可以更改网格“另存为”以写出文本而不是 UTF-16 的编码?

当我在 SQL Server Management Studio 中右键单击结果网格时,它允许另存为 .CSV。目前它保存编码为 UTF-16 (Unicode) 的 .CSV 文件,但 Excel 不会自动打开此格式(Excel 会提示输入分隔符)。为了绕过提示,我在 SlickEdit 中打开了文件并执行了另存为“文本”。当然,这是一个额外的步骤。

0 投票
3 回答
22276 浏览

xml - 使用 PowerShell 将 xml 从 UTF-16 转换为 UTF-8

将 XML 从 UTF16 转换为 UTF8 编码文件的最简单方法是什么?

0 投票
9 回答
71630 浏览

git - 我可以让 git 将 UTF-16 文件识别为文本吗?

我在 git 中跟踪一个 Virtual PC 虚拟机文件 (*.vmc),在进行更改后,git 将该文件识别为二进制文件并且不会为我区分它。我发现该文件是用 UTF-16 编码的。

可以教 git 识别这个文件是文本并适当地处理它吗?

我在 Cygwin 下使用 git,core.autocrlf 设置为 false。如有必要,我可以在 UNIX 下使用 mSysGit 或 git。

0 投票
3 回答
1123 浏览

unicode - 在 Windows 上显示 U+FFFF 上方的 Unicode 字符

我正在使用 EVC++ 4 开发的应用程序在 Windows CE 5 上运行并且应该支持 unicode(AFAIK wchar_t 在 Windows 上使用 UTF-16,所以我正在使用它),所以我希望能够用“更具异国情调”来测试它人物。尤其是在 UTF-16 中使用 4 字节而不仅仅是 2 字节的字符。因此,我试图在文本编辑器中显示这些字符(atm 在我的带有 Windows XP 的台式 PC 上,而不是在嵌入式设备上)。

但我还没有做到这一点。作为一个例子,我选择了这个角色。就像这里提到的“MPH 2B Damase”应该支持这个角色。所以我下载了字体并将其放入 Windows\Fonts。我使用十六进制编辑器(只是为了确定)创建了一个文本文件,其中包含以下内容:

当我用记事本打开它(应该支持 unicode,对吗?)并使用下载的字体时,它不会按预期显示 1 个字符,但这是 2:

我究竟做错了什么?:)

谢谢!

赫尼尔斯

编辑: 按照建议翻转 BOM 不起作用。在这种情况下,记事本(以及我尝试过的所有其他编辑器)显示两个正方形。有趣的是,如果我在这里复制两个方块(使用 firefox),我会看到正确的字符:

我也用 Komodo Edit 进行了尝试,结果相同。

使用 UTF-8 也无助于记事本。

0 投票
3 回答
15541 浏览

sql-server - 在 SQL Server 中存储 UTF-16/Unicode 数据

据此,SQL Server 2K5 在内部使用 UCS-2 它可以在 UCS-2 中存储 UTF-16 数据(具有适当的数据类型,nchar 等),但是如果有补充字符,则将其存储为 2 个 UCS-2 字符。

这给字符串函数带来了明显的问题,即 SQL Server 将一个字符视为 2。

令我有些惊讶的是,SQL Server 基本上只能处理 UCS-2,甚至更多,以至于这在 SQL 2K8 中没有得到修复。我很欣赏其中一些角色可能并不那么常见。

除了文章中建议的函数之外,还有关于在 SQL Server 2K5 中处理(损坏的)字符串函数和 UTF-16 数据的最佳方法的任何建议。

0 投票
3 回答
3434 浏览

python - 使用 Python 2/3 解析 ANSI 和 UTF-16LE 文件的最佳方法?

我有一组以 ANSI 或 UTF-16LE 编码的文件。我希望 python 使用正确的编码打开文件。问题是 ANSI 文件在使用 UTF-16le 编码时不会引发任何异常,反之亦然。

有没有一种直接的方法可以使用正确的文件编码打开文件?