rubyでWEBアプリを作っている(僕の環境の場合はUTF-8のアプリ)と
incompatible character encodings: ASCII-8BIT and UTF-8とか
"\\xE3" from ASCII-8BIT to UTF-8...みたいなエラーが大量発生して泣きそうになっていました。
Encoding::UndefinedConversionError
ログの通り、文字コードに関するエラーなのですが、だいたい
String.force_encoding("UTF-8")で回避できます。
特に僕の場合は、sqlite3を使っていたのですが、
ruby-sqlite3モジュールでは、取得データを全てASCII-8BITで保持する実装になっているようで、
Rubyで遊ぶよ Rubyのsqlite3-rubyは必ず文字コードASCII-8BITとして返す
ASCIIなバイト文字列をUTF-8にする際におかしなコードに引っかかっちゃってる系でエラーが出るようです。
ruby-sqlite3の場合は、取得したデータをことごとく .force_encoding("UTF-8")すれば何とかなります。
ちなみに、rubyで文字コード対策としてマジックコメントというものがあります。
#!/usr/local/bin/rubyとすれば、文字コードを判別して出力してくれます。
# -*- coding: utf-8 -*-
以上どえぇぇぇぇす。
0 件のコメント:
コメントを投稿