【问题标题】:How can I encode/decode shift-jis in elixir?如何在长生不老药中编码/解码 shift-jis?
【发布时间】:2022-01-01 11:03:29
【问题描述】:

给定 shift-jis 编码的文本,如何将其解码为 Elixir 的原生 UTF-8 编码,反之亦然?

【问题讨论】:

    标签: character-encoding elixir shift-jis


    【解决方案1】:

    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,您可以在其中看到它的运行情况。

    【讨论】:

    • 这仅适用于 Windows 吗?或者在 Mac 或 Linux 上运行是否需要 shift_jis 变量中的不同模块?
    • @DogEatDog Codepagex 库是纯 Elixir 和平台无关的,AFAIK。 VENDORS/MICSFT/WINDOWS/CP932 不是模块,而是编译时从 unicode.org 下载的映射文件的路径。
    • 小修正,编译时没有下载映射文件,包含在分发中:github.com/tallakt/codepagex/tree/master/unicode
    • 很高兴知道这一点。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多