问题标签 [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.
unicode - UTF-8、UTF-16 和 UTF-32
UTF-8、UTF-16 和 UTF-32 之间有什么区别?
我知道它们都将存储 Unicode,并且每个都使用不同数量的字节来表示一个字符。选择一个比另一个有优势吗?
.net - 你是如何让 ASP.NET 输出 UTF-16 编码的文本的?
你是如何让 ASP.NET 输出 UTF-16 编码的文本的?
我在 .NET 中序列化一个默认为 UTF-16 格式的对象。现在我想将字符串作为输出响应发送给 .ashx 请求。
我收到错误:不支持从当前编码切换到指定编码。错误处理资源
如何告诉我的网站或页面使用 UTF-16 格式。
谢谢。
更新:阅读两个答案。
.net - 是否有将二进制数据打包成 UTF-16 字符串的标准技术?
(在 .NET 中)我将任意二进制数据存储在byte[](例如图像)中。现在,我需要将该数据存储在一个字符串中(遗留 API 的“注释”字段)。是否有将这种二进制数据打包成字符串的标准技术?通过“打包”,我的意思是对于任何相当大的随机数据集,bytes.Length/2与packed.Length 大致相同;因为两个字节或多或少是一个字符。
两个“明显”的答案不符合所有标准:
没有非常有效地使用字符串,因为它只使用大约 60,000 个可用字符中的 64 个字符(我的存储是System.String)。一起去
更好地利用了string,但它不适用于包含无效 Unicode 字符的数据(比如不匹配的代理对)。 这篇 MSDN 文章展示了这种精确(差)的技术。
让我们看一个简单的例子:
在这种情况下bytes和utf16_bytes是相同的,因为原始字节是 UTF-16 字符串。使用 base64 编码执行相同的过程会得到 16 个成员的base64_bytes数组。
现在,使用无效的 UTF-16 数据重复该过程:
您会发现utf16_bytes与原始数据不匹配。
我编写了在无效 Unicode 字符之前使用 U+FFFD 作为转义的代码;它有效,但我想知道是否有比我自己制作的更标准的技术。更不用说,我不喜欢将DecoderFallbackException作为检测无效字符的方式。
我想您可以将其称为“基本 BMP”或“基本 UTF-16”编码(使用 Unicode 基本多语言平面中的所有字符)。是的,理想情况下,我会遵循Shawn Steele 的建议并传递byte[]。
我将接受 Peter Housel 的建议作为“正确”答案,因为他是唯一一个接近建议“标准技术”的人。
unicode - Big Endian 和 Little Endian 字节顺序的区别
Big Endian 和 Little Endian Byte order 有什么区别?
这两者似乎都与 Unicode 和 UTF16 有关。我们究竟在哪里使用它?
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 中打开了文件并执行了另存为“文本”。当然,这是一个额外的步骤。
xml - 使用 PowerShell 将 xml 从 UTF-16 转换为 UTF-8
将 XML 从 UTF16 转换为 UTF8 编码文件的最简单方法是什么?
git - 我可以让 git 将 UTF-16 文件识别为文本吗?
我在 git 中跟踪一个 Virtual PC 虚拟机文件 (*.vmc),在进行更改后,git 将该文件识别为二进制文件并且不会为我区分它。我发现该文件是用 UTF-16 编码的。
可以教 git 识别这个文件是文本并适当地处理它吗?
我在 Cygwin 下使用 git,core.autocrlf 设置为 false。如有必要,我可以在 UNIX 下使用 mSysGit 或 git。
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 也无助于记事本。
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 数据的最佳方法的任何建议。
python - 使用 Python 2/3 解析 ANSI 和 UTF-16LE 文件的最佳方法?
我有一组以 ANSI 或 UTF-16LE 编码的文件。我希望 python 使用正确的编码打开文件。问题是 ANSI 文件在使用 UTF-16le 编码时不会引发任何异常,反之亦然。
有没有一种直接的方法可以使用正确的文件编码打开文件?