Web サーバー上の MySQL データベースと Objective-C Cocoa デスクトップ アプリとの間のブリッジとして、単純な PHP Web サービスを作成しようとしています。私が知る限り、チェーン内のすべてのリンクは UTF-8 で動作していますが、非標準の文字を Cocoa で表示することはできないようです。代わりに、私のインターフェイス要素はエスケープのみを表示します。
どの段階でもこの問題を解決できる解決策を受け入れます。PHPとObj-C側を書いているので、サーバー側の問題でもクライアント側の問題でも対応できるはずです。この時点で、どのモグラを叩くべきかわかりません。
データベース
情報は MySQL データベースのテーブルから取得されます。データベース照合と各フィールドは utf_general_ci に設定されます。
PDO
私の PHP Web サービスは、PDO を使用してデータをフェッチします。
$pdo = new PDO('mysql:host=mysql.hostname.com;dbname=tst_data_model', 'user', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
if ($pdo) {} else {die();}
$stmt = $pdo->prepare("SELECT * FROM team");
$stmt->execute();
PHP
次に、データをエコーします。
header('Content-Type: text/html; charset=utf-8');
echo("<TEAM>\r");
echo("<team_id>{$row['team_id']}</team_id>\r");
echo("<name_full_native>{$row['name_full_native']}</name_full_native>\r");
echo("<name_short_native>{$row['name_short_native']}</name_short_native>\r");
echo("<name_full_english>{$row['name_full_english']}</name_full_english>\r");
echo("<name_short_english>{$row['name_short_english']}</name_short_english>\r");
echo("</TEAM>\r\r");
NSDATA
デスクトップ アプリは、NSURLConnection を使用してこのデータをフェッチします。
NSData* returnValue = [NSURLConnection sendSynchronousRequest:teamArrayRequest returningResponse:NULL error:NULL];
NSString
最後に、UTF8 文字列エンコーディングを指定して、データから文字列を取り出します。
NSString* rVString = [[NSString alloc] initWithData:returnValue encoding:NSUTF8StringEncoding];
この文字列をデバッガーで表示するか、NSTextView に送信すると、表示されるのは \u エスケープだけです。
ボルシア M\U00f6nchengladbach
Quer\U00e9taro
レアル エスパ\U00f1a
何か不足していますか?これらの脱出はどこから来るのですか?