質問: これまで環境依存文字を使用しないよう努めてきましたが、 Windows10のメモ帳がUnicode対応していることを知り、 Unicode文字なら普通に使用しても問題ないのでは、と思ったのですが、 Unicodeではない文字コード環境を使用する例としては何が挙げられますか? 少なくともutf8で作成したWebサービスに対して、CなどのUnicode文字を任意のユーザーが入力しても問題ないですか?
回答: コンピュータは文字を `符号化文字集合` と `文字符号化方式` の組み合わせで表現しています。 Unicodeは符号化文字集合のひとつで、UTF-8はUnicodeを使った文字符号化方式のひとつです。 JIS X 0208も符号化文字集合のひとつで、Shift_JISはJISを使った文字符号化方式のひとつです。 「問題がない」かどうかは、文字をどう扱うかにかかってきます。例えば JavaScript は文字列の内部表現に UTF-16 を使っていますから、たとえJavaScriptがUTF-8で記述されていても内部表現に直接依存したコードは問題を抱えています。 ``` // 文字列の長さを得るのにlengthを使うと破綻する。 console.log("C".length); // => 2 ``` Windowsのメモ帳は文字エンコードの欄に「Unicode」と「UTF-8」を並べて記載していますが、これは間違いです。メモ帳から「Unicode」で保存した際は「UTF-16LE」という文字符号化方式で保存されます。 追記: Windows10 1903以後は「Unicode」表示は無くなっています。