1

私のアプリケーションでは、サーバーからいくつかの文字列値を取得していますが、正しい文字列になっていません。

بسيط これはサーバー側からの文字列ですが、私が得ているのは Ø¨Ø³ÙØ·

オンライン デコーダーで応答文字列をテストしようとしました。

http://www.cafewebmaster.com/online_tools/utf8_encode

UTF-8でエンコードされていますが、iPhone側で文字列をデコードできませんでした。

これらのStack Overflowリンクを参照として見ました

エスケープされた UTF8 文字を元の形式の
unicode エスケープに
変換する

しかし、どれも役に立ちませんでした。

4

3 に答える 3

1

あなたの質問から、次の点がわかりません。

  1. サーバー側にアクセスできますか (つまり、そのプログラミングを意味します)?
  2. サーバーとの間でデータをどのように送受信しますか?

最初の質問では、サーバーが UTF-8 エンコーディングでテキストを送信するようにプログラムされていると仮定します。

iPhone でソケットを使用してサーバーに送信する場合は、次のようにします。

NSString *messageToSend = @"The text in the language you like";
const uint8_t *str = (uint8_t *) [messageToSend cStringUsingEncoding:NSUTF8StringEncoding];
[self writeToServer:str];

関数writeToServerは、データをサーバーに送信する関数です。

データを SQLite3 データベースに格納する場合は、次を使用します。

sqlite3_bind_text(statement, 2, [@"The text in the language you like" UTF8String], -1, NULL);

サーバーから (再びソケットを使用して) データを受信して​​いる場合は、次の手順を実行します。

[rowData appendBytes:(const void *)buf length:len];
NSString *strRowData = [[NSString alloc] initWithData:rowData encoding:NSUTF8StringEncoding];

これで必要なすべてのケースがカバーされることを願っています。

于 2012-02-19T20:33:01.867 に答える
0

ソースがなければ決定的なことを言うのは難しいですが、ある時点で、UTF-8エンコードされた文字列を として解釈しISO-8859-1、(誤って) に変換していUTF-8ます:

文字列 'بسيط' の分析:

  • 生の長さ: 8
  • 論理長: 4
  • 生バイト: 0xD8 0xA8 0xD8 0xB3 0xD9 0x8A 0xD8 0xB7
  • ISO-8859-1 (Ø¨Ø³ÙØ·) として解釈: 0xC3 0x98 0xC2 0xA8 0xC3 0x98 0xC2 0xB3 0xC3 0x99 0xC2 0x8A 0xC3 0x98 0xC2 0xB7

したがって、ある時点で、おそらくコード内で への参照が見つかるはずISO-8859-1です。それを見つけて削除します。

于 2012-02-19T20:07:26.460 に答える
0

このリンクから問題を解決しまし

NSString でのさまざまな種類の UTF8 デコード

NSString *string = @"Ø¨Ø³ÙØ·";

私は試した

[NSString stringWithUTF8String:(char*)[string cStringUsingEncoding:NSISOLatin1StringEncoding]]

この方法

ありがとうございました。

于 2012-02-19T20:21:29.280 に答える