unicode - 如何在 Julia 中加载 UTF16 编码的文本文件?

标签 unicode encoding julia

我有一个文本文件(很确定)是用 UTF16 编码的,但我不知道如何在 Julia 中加载它。我是否必须将其作为字节加载,然后使用 UTF16String 进行转换? ?

最佳答案

最简单的方法是将其读取为字节,然后进行转换:

s = open(filename, "r") do f
    utf16(readbytes(f))
end

请注意 utf16还会检查字节顺序标记 (BOM),因此它将处理字节序问题,并且不会在结果 s 中包含 BOM。 .

如果您真的想避免制作数据的副本,并且您知道它是 native 端序的,这也是可能的,但是您必须明确地编写一个 NUL 终止符(因为 Julia UTF-16 字符串数据在内部有一个 NUL 代码点在传递给期望以 NUL 结尾的数据的 C 例程的结尾):
s = open(filename, "r") do f
    b = readbytes(f)
    resize!(b, length(b)+2)
    b[end] = b[end-1] = 0
    UTF16String(reinterpret(UInt16, b))
end

但是,典型的 UTF-16 文本文件将以 BOM 开头,在本例中为字符串 s将包含 BOM 作为其第一个字符,这可能不是您想要的。

关于unicode - 如何在 Julia 中加载 UTF16 编码的文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061521/

相关文章:

c# - Azure WebJobs 上的编码问题

c - JNI 函数在 android 上返回非法的 UTF 字符

julia - Julia 中如何锁定变量类型?

c# - 将 ASCII 字符数组转换为 UNICODE 字符串

c++ - 在方法中将 Unicode CString (wchar_t) 转换为 const char *

python - 具有混合编码的文件 - Python

julia - 如何在 Julia 中初始化 reduce 和使用累加器

json - 为什么这个字典包含这么多#undefs?如何忽略它们?

Java 邮件发件人地址删除非 ASCII 字符

php - 如何将 Unicode 转义序列(如 "\u00ed")解码为正确的 UTF-8 编码字符?