RubyMotion 2.34、Motion-bundler 0.2.1、および rubysl-rexml 2.4.1 を使用して iOS7 で作業しています。
サーバーからの XML 応答を解析しようとすると、REXML のエンコード部分で次のエラーが発生しました。ただし、問題を特定するために次のことも行いました。これは、REXML ライブラリが指定された文字列に対して行うことです。
def content
@s = @response.body.to_s
puts @s.encoding
@s.encode("UTF-8")
end
呼び出し@response
からの戻りはどこにありますか。AFMotion::HTTP.get("http://....")
これは、単純な US-ASCII 文字だけを含む単純な XML 文字列です。次のエラーが表示されます。
2014-10-02 18:34:14.714 Promotion-motion-kit[44375:1346884] *** キャッチされない例外 'RuntimeError' が原因でアプリを終了します。理由: 'http_client.rb:17:in
block in content': this operation cannot be performed with encoding
UTF-8' は Apple の ICU のためですhttp_client.rb:15:in `content' からはサポートされていません (RuntimeError)。
コードを次のように変更すると、まったく同じエラー (UTF-8 に注意) も発生します。
@s.encode("US-ASCII")
String#encode
ということで、有効なエンコーディング名であれば何を付けても構わないようです。
更新: このエラーは、次のような使用する任意の文字列で発生します。
"hello".encode("UTF-8")
誰もこの状況を修正する方法を知りませんか?