首页 > 解决方案 > 如何在 Julia 中将 utf8 代码转换为字符?

问题描述

我正在从使用 us-utf8 编码的纯文本文件中读取字符串,在读取内容后,我想提取包含中文字符的文件名,并且中文字符以其 utf8 代码存储在文件中,例如:\x6532 \x6320.pdf 等。当然我需要将其更改为 \u 而不是 \x

但是我很困惑,因为在julia控制台中, println("\u6532\u6320.pdf") 什么的时候很容易得到对应的汉字,但是如果从文件中读取字符串,它只能显示为“ \u6532\u6320.pdf" 与存储在文本文件中的完全相同。我承认这应该是理想的行为。但是如何将 utf8 代码转换为控制台结果中的相应字符,我相信我有正确的 $LANG 设置。

我在 julia 控制台中进行了一些测试,如下所示:

println("\u6543")    =>   敃
println("\\" * "u6543") => \u6543

基本上第二行是我从文本文件中读取字符串时遇到的问题,我也尝试使用 StringEncoding 包解决问题,如下所示:

using StringEncoding
println(decode(Vector{UInt8}(replace(line_content_from_text,"\\x"=>"\\u"),"UTF-8"))

但我仍然得到类似\u6543的东西。

标签: encodingcharacter-encodingjulia

解决方案


适合你parse的情况吗?

julia> s = "u6543"
"u6543"

julia> s_num = chop(s, head=1, tail=0)
"6543"

julia> Char(parse(UInt32, s_num, base=16))
'敃': Unicode U+6543 (category Lo: Letter, other)

相关讨论:https ://discourse.julialang.org/t/string-representation-of-hexadecimal-to-unicode-character/38289/2


推荐阅读