如何将 utf8 代码转换为 Julia 中的字符?

how to convert utf8 code to character in Julia?

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

但是我很困惑,因为在 julia console 中,当 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 的东西。

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