38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
# SHIFT_JIS in Elixir with Codepagex
|
|
|
|
A demonstration of how to encode/decode SHIFT_JIS in Elixir with the [Codepagex](https://hex.pm/packages/codepagex) library
|
|
|
|
## Config
|
|
|
|
`SHIFT_JIS` is called `VENDORS/MICSFT/WINDOWS/CP932` in Codepagex. Enable it in [config](https://github.com/adamu/shift-jis-elixir/blob/main/config/config.exs):
|
|
|
|
```elixir
|
|
config :codepagex, :encodings, [
|
|
# CP392 is SHIFT_JIS
|
|
# https://en.wikipedia.org/wiki/Code_page_932_(Microsoft_Windows)
|
|
# Make sure to `mix deps.compile codepagex --force` after changing this
|
|
"VENDORS/MICSFT/WINDOWS/CP932"
|
|
]
|
|
```
|
|
|
|
## Encode/Decode
|
|
|
|
After that we can [encode/decode](https://github.com/adamu/shift-jis-elixir/blob/main/lib/shift_jis.ex):
|
|
|
|
```elixir
|
|
defmodule ShiftJis do
|
|
# Check config/config.exs to see how to enable this
|
|
@shift_jis "VENDORS/MICSFT/WINDOWS/CP932"
|
|
|
|
@doc ~S"""
|
|
iex> test = ShiftJis.encode("テスト")
|
|
<<131, 101, 131, 88, 131, 103>>
|
|
iex> ShiftJis.decode(test)
|
|
"テスト"
|
|
"""
|
|
|
|
def encode(str), do: Codepagex.from_string!(str, @shift_jis)
|
|
def decode(str), do: Codepagex.to_string!(str, @shift_jis)
|
|
end
|
|
```
|