0

document.sdf (json) を Amazon Cloud Search に送信しようとしています。いくつかの特殊文字があるまで、すべてが正常に機能します

Found Unicode characters that are not legal for Cloud Search:\n Illegal Unicode character '\u0002'\n Illegal Unicode character '\u0010'\n Illegal Unicode character '\u0001'\n Illegal Unicode character '\b'

エラーは、テキストのこの部分から発生します。

...sadad<br \/>\n;color:G\u0002% k\u0010>\u0001\b? X_? p>", ...

これらは、PHP スクリプトによって生成された document.sdf からのものであり、json_encoded

上記の原文:

;color:G%k>? バツ_?p>

4

1 に答える 1

1

次のような正規表現を使用して、テキストからすべての無効な文字を削除する価値がある場合があります。

[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF]

しかし、同様の問題に遭遇したとき、問題は、POST を実行するときに文字エンコーディングを明示的に指定していなかったことだけでした。

$curl = curl_init($cloudsearch_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, 
            array('Content-Type: application/json; charset=UTF-8')); //Defaults to ISO10646 (I think) without this
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_exec($curl);
于 2013-07-25T00:31:43.717 に答える