【发布时间】:2022-01-01 11:03:29
【问题描述】:
给定 shift-jis 编码的文本,如何将其解码为 Elixir 的原生 UTF-8 编码,反之亦然?
【问题讨论】:
标签: character-encoding elixir shift-jis
给定 shift-jis 编码的文本,如何将其解码为 Elixir 的原生 UTF-8 编码,反之亦然?
【问题讨论】:
标签: character-encoding elixir shift-jis
Codepagex 库支持这一点。你只需要弄清楚它叫什么 SHIFT_JIS。
Codepagex 使用 unicode.org 提供的映射。 shift-jis 有一个,但它被标记为 OBSOLETE,因此在 Codepagex 中不可用。不过微软的CP932也有,effectivelySHIFT_JIS,所以你可以用。
默认是不开启的,所以需要在配置中开启(必要时用mix deps.compile codepagex --force重新编译):
config :codepagex, :encodings, [
"VENDORS/MICSFT/WINDOWS/CP932"
]
iex(1)> shift_jis = "VENDORS/MICSFT/WINDOWS/CP932"
"VENDORS/MICSFT/WINDOWS/CP932"
iex(2)> test = Codepagex.from_string!("テスト", shift_jis)
<<131, 101, 131, 88, 131, 103>>
iex(3)> Codepagex.to_string!(test, shift_jis)
"テスト"
我创建了一个example repo,您可以在其中看到它的运行情况。
【讨论】:
shift_jis 变量中的不同模块?
Codepagex 库是纯 Elixir 和平台无关的,AFAIK。 VENDORS/MICSFT/WINDOWS/CP932 不是模块,而是编译时从 unicode.org 下载的映射文件的路径。