done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

プログラミング言語別ソースコードのエンコーディング規約

2014年になっても文字コードには悩まされることはしばしば。 最近だと取り敢えずUTF-8ということが多いですが、 プログラミング言語だとどうなっているのかちょっと気になったので調べて纏めてみました。

プログラミング言語の選定には特に意味はありません。

Python (3系列)

デフォルトではUTF-8として扱われるようです。 ただし別のエンコーディングを使用したい場合にはソースコード中にその旨を記載することで使用できます。

#!/usr/bin/env python
# -*- coding: encoding -*- # `#!(シェバング)の次の行に書く`

Ruby (Ver. 2.0以上)

こちらもデフォルトではUTF-8のようです。Pythonと同様、magic commentでエンコーディングを指定することができます。

# encoding: UTF-8 # シェバングが無ければ最初の行に書く
# coding: UTF-8   # `coding`か`encoding`の次に`:`、スペース、その次にエンコーディングの名前を書く

Golang

こちらはUTF-8オンリーみたいですね。BOMは無視するみたいです。

Haskell

GHC 6.6以降からはUTF-8ソースコードエンコードとして定義されたみたいです。

Rust

こちらも当然UTF-8NKFCにて正規化されたものとまで定義されているのでエライ徹底っぷりです。

Erlang

Erlang/OTP R16AからUTF-8をサポートし、Erlang/OTP 17.0からデフォルトのソースコードエンコーディングになったようですね。

Java

特に決まっていないようです。コンパイルオプションでエンコーディングが指定でき、特に指定がなければ環境依存っぽいですね。

$ javac ... -encoding UTF-8

CSharp

よくわからんかった…誰か教えて下さい(´・ω・`)

結論

UTF-8使いましょう