XML アプリでネットワーク経由で XML ファイルを取得しています。ファイルは ISO-8859-1 を使用してエンコードする必要があることを知っています。
だから私はそれを引っ張るときにそれをデコードしようとします:
func extractXMLFromHttpResponse(data: NSData) -> XMLIndexer {
let xmlContent = NSString(data: data, encoding: NSISOLatin1StringEncoding)!
print(xmlContent)
return SWXMLHash.parse(xmlContent as String)
}
注: XMLIndexer は、 XML の解析を容易にするSWXMLHash ライブラリからのものです。
ただし、NSString をデバッグ コンソールに出力すると、次のような特殊文字 (スペイン語) が表示されることに気付きました。
「ニ」または「エ」
正しくデコードされません。
デコード プロセスの結果、バイトではなくテキストが表示されます。最初の行は次のとおりです。
<?xml version="1.0" encoding="ISO-8859-1"?>
だから、私は正しいエンコーディングを選択したと思います。ただし、一部の文字をデコードできない理由がわかりません。データをデコードするときに何か間違ったことをしていますか?
奇妙なことに、手動で GET リクエストを実行してブラウザでファイルを表示すると、デコード エラーが発生しません。
編集:
TwoStraws がコメントで示唆したように、curl リクエストを行いました。それは私に次を返します:
HTTP/1.1 200 OK
キャッシュ制御: プライベート
コンテンツの長さ: 75030
コンテンツ タイプ: テキスト/xml
有効期限: 2015 年 12 月 16 日水曜日 09:13:05 GMT
サーバー: Microsoft-IIS/7.5
セット Cookie: ...; パス=/
X-Powered-By: ASP.NET
日付: 2015 年 12 月 16 日水曜日 09:13:05 GMT
たとえ私がそうしても
curl -v "http://www.example.com/webserviceGetCall"
xml ファイルがどのようにエンコードされているかは記載されていません。どういう意味ですか?Content-type の説明でエンコーディングも返すべきだと思いました。