英文:
how to replace not supported literals inside string In Julia?
问题
我有一个包含字符串的向量。它们是名字,但其中有一些带重音的西班牙名字。
我得到了类似于 Benda?a(指的是Bendaña)的东西。
我尝试使用大写函数,但它无法处理文字字符(InvalidCharError{Char}('ñ'))。
我尝试使用 replace
,但没有成功。
英文:
I have a vector with strings. They are names but there some spanish names who has accent.
I got something like Benda?a ( refering to Bendaña).
I am trying to do use the uppercase function but it can't deal with literals (InvalidCharError{Char}('\xf1')
I have tried to use replace
but with no success.
答案1
得分: 1
Julia的字符串采用UTF-8编码。如果您有一个使用其他编码的向量或字符串,您应该使用transcode
将其转换为UTF-8。
英文:
Julia Strings are UTF-8 encoded. If you have a Vector or String in another encoding, you should transcode
it to convert it to UTF-8.
答案2
得分: 0
> 我得到了类似于 Benda?a 的东西(指的是 Bendaña)。
这可能意味着您有一个非Unicode字符串,例如使用 Windows-1252 编码。(\xf1
是 ñ
的 Latin1 编码。)
(这与transcode
以及上面提到的UTF-8与其他Unicode编码(如UTF-16)无关...您的数据从一开始就不是Unicode存在更基本的问题。)
您可以使用 StringEncodings.jl 包 来将非Unicode字符串转换为Unicode,例如:
julia> s = decode([0x42, 0x65, 0x6e, 0x64, 0x61, 0xf1, 0x61], "Windows-1252")
"Bendaña"
julia> uppercase(s)
"BENDAÑA"
(更好的做法是——现在已经是2023年了,您真的应该找一个可以输入Unicode字符串的编辑器。某些Windows编辑器可能需要配置才能使用UTF-8。)
英文:
> I got something like Benda?a ( refering to Bendaña).
Probably this means that you have a non-Unicode string, e.g. in the Windows-1252 encoding. (\xf1
is the Latin1 encoding of ñ
.)
(This is separate from transcode
and UTF-8 vs. other Unicode encodings like UTF-16 mentioned above … you have a more fundamental problem in that your data is not Unicode to begin with.)
You can use the StringEncodings.jl package to convert non-Unicode strings to/from Unicode. For example:
julia> s = decode([0x42, 0x65, 0x6e, 0x64, 0x61, 0xf1, 0x61], "Windows-1252")
"Bendaña"
julia> uppercase(s)
"BENDAÑA"
(Better yet — it's 2023, you should really find an editor that lets you enter your strings in Unicode. Some Windows editors require a configuration to use UTF-8.)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论