UTF エンコーディングには文字以外のコードがあり、これらの例外を処理する必要があります。これを行うライブラリがたくさんあることは知っていますが、基本的な原則を知る必要があると思います。
Unicode コードポイントを UTF または UCS エンコーディングとの間でトランスコードする場合、何を気にする必要がありますか? 各エンコーディングには異なるルールがあると思いますが、3 つが単純なプリンシパルである必要があります。私はそれを知りたい。
アップデート
から Unicode コード ポイント (UTF-16 文字ではない) を抽出しようとしていたため、この質問を投稿しましたNSString
。NSString
文字処理用の UTF-16 方式の API のみをサポートしているため、実際のコード ポイントを取得するには追加の処理を実行する必要があります (これは実際には意味があります)。私のプログラムは
- サロゲート ペア文字を正しくプロモートする
- または、信頼できる文字処理のためにそれらを禁止します。
しかし、問題は、サロゲート ペアだけが UTF-16 で処理する必要があるかどうかわからないことです 。気にするものがもっとあるはずだと思います、そしてそれを知りたいです。可能であれば、他のエンコーディングでも。もちろん、処理が簡単な場合に限ります。非常に複雑な場合は、 のようなライブラリを使用しますlibICU
。
その機能が私に与えられることはわかっlibICU
ていますが、現在、私にはやや過剰に設計されているように感じます. 基本的なルール (たとえば、「サロゲート ペアだけが重要です!」) を知っていれば、少なくともサポートされていない文字を禁止することは非常に簡単でシンプルなはずです。