Unicode 如何在Julia中加载UTF16编码的文本文件?
我有一个文本文件,我确信它是用UTF16编码的,但我不知道如何在Julia中加载它。我是否必须将其加载为字节,然后使用UTF16String进行转换?最简单的方法是将其读取为字节,然后进行转换:Unicode 如何在Julia中加载UTF16编码的文本文件?,unicode,encoding,julia,Unicode,Encoding,Julia,我有一个文本文件,我确信它是用UTF16编码的,但我不知道如何在Julia中加载它。我是否必须将其加载为字节,然后使用UTF16String进行转换?最简单的方法是将其读取为字节,然后进行转换: s = open(filename, "r") do f utf16(readbytes(f)) end 请注意,utf16还检查字节顺序标记(BOM),因此它将处理尾数问题,并且不会将BOM包含在结果的s中 如果您确实希望避免复制数据,并且您知道它是本机endian,这也是可能的,但是您必须
s = open(filename, "r") do f
utf16(readbytes(f))
end
请注意,utf16
还检查字节顺序标记(BOM),因此它将处理尾数问题,并且不会将BOM包含在结果的s
中
如果您确实希望避免复制数据,并且您知道它是本机endian,这也是可能的,但是您必须显式地编写NUL终止符(因为Julia UTF-16字符串数据在内部的末尾有一个NUL代码点,用于传递给期望NUL终止数据的C例程):
但是,典型的UTF-16文本文件将以BOM开头,在这种情况下,字符串
s
将包含BOM作为其第一个字符,这可能不是您想要的。只是好奇,在bash提示符下,将您的\u文本\u文件归档
或文件-i您的\u文本\u文件
说什么?Little-endian UTF-16 Unicode英文文本,具有很长的行,带有CRLF、LF行终止符
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