3

UTF-8 文字列を UCS-2 文字列に変換しようとしています。「\uFF0D\uFF0D\u6211\u7684\u4E0A\u7F51\u4E3B\u9875」のような文字列を取得する必要があります。私は今までに約1か月間グーグルで検索しましたが、UTF-8からUCS-2への変換に関するリファレンスはまだありません. 誰か助けてください。事前にt​​hx。

編集:わかりました、多分私の説明は十分ではありませんでした。これが私がやろうとしていることです。私は韓国に住んでいて、CTMessageCenter を使用して SMS メッセージを送信しようとしています。アプリから簡体字を送信しようとしました。そして、私は????を取得します 適切な文字の代わりに。そこで、UTF-8、UTF-16、BE、LE も試してみました。しかし、それらはすべて戻ります??。最後に、韓国では SMS が UCS-2 および EUC-KR エンコーディングを使用していることを知りました。変ですね。とにかく、\u4E3B\u9875 のような文字列を送信しようとしましたが、うまくいきました。そのため、最初に文字列を UCS-2 エンコーディングに変換し、それらの文字列から文字列リテラルを取得する必要があります。

4

2 に答える 2

2

ウィキペディア:

古い UCS-2 (2 バイトのユニバーサル文字セット) は、1996 年 7 月に Unicode 標準のバージョン 2.0 で UTF-16 に取って代わられた同様の文字エンコーディングです。2 コード ポイントを使用するだけで固定長形式を生成します。 16 ビットのコード単位として、その時点で値が割り当てられていたすべての文字を含む、0 ~ 0xFFFF の範囲のすべてのコード ポイントの 96.9% について、UTF-16 とまったく同じ結果を生成します。

IBM :

UCS-2 標準は 65,535 文字に制限されており、データ処理業界では 94,000 文字以上が必要であるため、UCS-2 標準は Unicode UTF-16 標準に取って代わられる過程にあります。

ただし、UTF-16 は既存の UCS-2 標準のスーパーセットであるため、アプリケーションが UCS-2 を UTF-16 であるかのように扱う限り、システムの既存の UCS-2 サポートを使用してアプリケーションを開発できます。

uincode.org :

UCS-2 は、サロゲート コード ポイントと UTF-16 が標準のバージョン 2.0 に追加される前の、Unicode 1.1 までの Unicode 実装を指す古い用語です。この用語は避けるべきです。

UTF-16 と UCS-2 はデータ交換の目的で同一であるため、UCS-2 は別個のデータ形式を定義しません。どちらも 16 ビットで、コード単位の表現はまったく同じです。

そのため、ほとんどの言語ライブラリで「UTF8toUnicode」変換を使用すると、基本的に UCS-2 である UTF-16 が生成されます。また、Objective-C 文字列から 16 ビット文字を抽出するだけでも、同じことが実現します。

言い換えれば、解決策はずっと目の前にあるということです。

于 2011-08-07T03:04:15.667 に答える
0

UCS-2 は有効な Unicode エンコーディングではありません。UTF-8 です。

したがって、UTF-8 を UCS-2 に変換することは不可能です。実際、その逆も可能です。

UCS-2 は死んだ、古い歴史です。安心して腐らせてください。

于 2011-08-06T15:09:37.483 に答える