Go と Rustの文字列

| コメント(0) | トラックバック(0)

Go言語における文字列はUTF-8のバイト列を保持します。また、Unicodeの1符号位置に対応するデータ型としてruneというものが用意されており、これは32ビット整数と同じものです。他の言語でいうchar型にあたります。

Rustでも類似の形です。つまり、文字列型はUTF-8のバイト列を保持し、Unicodeのスカラー値に対応する型としてcharが定義されています。(ここでわざわざ「スカラー値」といい「符号位置」としていないのはRustのドキュメントがそうしているせいで、まあほぼ同じようなものですが、サロゲート上位下位の範囲の値を含まない点だけが違います)

こうなるとUTF-16の出る幕がない感じになってきます。今後、JavaやC#のように「文字列はUTF-16、char型は16ビット」というものから、こちらの方式へシフトしてくるのでしょうか。JavaなどはUnicodeのBMPにしか文字の割り当てのなかった頃に設計されたので、当時ならこうだろうなというのは分かります。

ちなみにRubyは文字列の内部コードはひとつのものに限定されませんが、Unicodeの使用ではUTF-16でなくUTF-8が普通なので、GoやRustと近い形といえるでしょう。ただしchar型にあたるものはありません。

トラックバック(0)

トラックバックURL: http://yanok.net/yanok/mt-tb.cgi/647

コメントする

最近のブログ記事

Go と Rustの文字列
Go言語における文字列はUTF-8のバイ…
『[改訂新版] プログラマのための文字コード技術入門』のページ作成
発売されてから半年以上経ってようやくのこ…
『[改訂新版]プログラマのための文字コード技術入門』発売!
ばたばたしていて当サイトの更新も怠ってい…
『プログラマのための文字コード技術入門』第7刷決定!
拙著『プログラマのための文字コード技術入…
名字の第3水準漢字:「㞍」
先日テレビを見ていたら、人名の名字にJI…

広告