# 変換. 文字コード変換(encode, decode)

# Bash

nkficonv を使う

雑多。。

------------------------------
nkf : 漢字コードの変換をする

    -e EUCコードを出力する。
    -E 入力コードをEUCコードとする。
    -j JISコードを出力する。
    -J 入力コードをJISコードとする。
    -s シフトJISコードを出力する。
    -S 入力コードをシフトJISコードとする。
------------------------------
□ 文字コード関連(nkf, kcc, qkc, iconv)

・改行コードを変換したい

    オプションで次のように指定
           -L[wmu] 改行モード
                                -Lu   unix (LF)
                                -Lw   windows (CRLF)
                                -Lm   mac (CR)
                            デフォルトは変換なしです。

・改行コードを変換したい
    qkc -mu [スクリプト]

・文字コード変換 ※エンコーディング
    変換前を大文字、変換後を小文字で指定する

        nkf -Ew xxx.txt   → EUCからUTF-8

        e : EUC-JP
        w : UTF-8
        s : Shift_JIS
        j : JIS (iso-2022-jp)

・どの文字コードで書かれているのかだけが知りたい
    nkf --guess xxx.txt

・文字コードを判別する
    kcc -c filename

・iconv
    iconv -f Shift_JIS -t UTF-8 sjis.txt > utf-8.txt
# iconvの場合
echo "日本語" | iconv -f UTF-8 -t ISO-2022-JP

# ※ メール送信
echo "日本語" | iconv -f UTF-8 -t ISO-2022-JP | mail -s "hello, this is test" $mail_to -- -f $mail_from
echo "日本語" | ruby -Ks -ne 'require "kconv"; print $_.tojis'

# Python

encode, decode

s.encode('shift_jis')
s.decode('utf-8')

雑多

文字コード変換
str_sjis = u'abcdefg'.encode('shift_jis')  # => 'abcdefg'
str_utf8 = 'abcdefg'.decode('utf-8')       # => u'abcdefg'

# shift_jis, Shift-JIS, sjis, SJIS, shiftjis, iso-2022-jp, euc-jp, eucjp, euc_jp

# ソースコードが何語で書かれてるかは、1行目か2行目に # coding: utf-8 のように書いて指定する

# Ruby

s.tosjis

雑多

文字コード変換 (convert)
$KCODE = 'UTF8'    # or EUC, SJIS, JIS, NONE
require 'kconv'

入力文字を自動判別する場合
str2 = str1.tojis
str2 = str1.toeuc
str2 = str1.tosjis
str2 = str1.toutf8

入力文字列の文字コードを明示的に指定する場合
str2 = str1.kconv(Kconv::SJIS, Kconv::EUC) # EUC→SJIS(逆に思いがちなので注意)

※ 他の書き方
  str2 = Kconv::kconv(str1, Kconv::SJIS, Kconv::EUC) # Kconv の場合
  str2 = NKF::nkf("-Es", str1)                       # NKF   の場合

文字コード判別
Kconv.guess(file.read)   # 戻り値は Kconv::SJISとか Kconv::UTF8 とか

[ 📩 ご意見 ]