コードポイントから文字に変換するには (chr)

Unicodeの符号位置の数字から、該当する文字を取得する方法。例えば65という整数から'A'という文字を取得したい場合。

逆に文字から符号位置を取得するにはord参照。

Scala

整数を Char にキャストすればよい。

println(65.asInstanceOf[Char])
// => A

println(12354.asInstanceOf[Char])
// => あ

Groovy

整数を char にキャストすればよい。

println((char)65)
// => A

println((char)12354)
// => あ

16ビットを超える文字はcharでは表現できず、Stringを生成する必要がある。

println(new String([127757] as int[], 0, 1))
// => 🌍

PHP

echo chr(65); // => A

残念ながらUnicodeはサポートされていない。

chr 関数 | PHP Manual
http://php.net/manual/ja/function.chr.php

HTML出力でブラウザにその文字が表示されればよいのであれば、HTMLの文字参照をすればよい。

$c = 12354;
echo "&#$c";

Python

Python2での例

print chr(65)         # => A
print unichr(0x3042)  # => あ
print unichr(0x2A61A) # => 𪘚

Python2では、0xFFを超える文字で chr を使おうとすると、 ValueError: chr() arg not in range(256) というエラーになってしまう。代わりに unichr を使う必要がある。

Python3での例

print(chr(65))         # => A
print(chr(0x3042))     # => あ
print(chr(0x2A61A))    # => 𪘚

Python3ではUnicode文字はすべて chr が使える。逆に unichr を使おうとすると、 NameError: name 'unichr' is not defined というエラーになってしまう。

Ruby

Fixnumクラスのchrメソッドでできる。文字エンコーディングを引数で与える必要がある。省略もできるがその場合は0xFFまでしか使えない。

0xFFを超える数値でパラメータを渡さずにchrメソッドを呼び出すと、 out of char range (RangeError) という例外が発生する。

配列のpackメソッドでも代用できる。

p 65.chr              # => "A"
p 127757.chr("UTF-8") # => "🌍"
p [0x3042].pack('U')  # => "あ"
p [127757].pack('U')  # => "🌍"

2行目と4行目は地球の絵文字。

Integer#chr メソッド | Ruby レファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/class/Integer.html#I_CHR

pack テンプレート文字列 | Ruby レファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/doc/pack_template.html

Perl

chr関数を使う。

print chr(65);      # => A
print chr(0x3042);  # => あ
print chr(0x2A61A); # => 𪘚
print chr(127757);  # => 🌍

chr 関数 | perldoc.jp
http://perldoc.jp/func/chr

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。