invalid byte sequence in GBK」問題invalid byte sequence in UTF-8」問題
1707 ワード
エラーが発生しました:
test.rb:8:in `match': invalid byte sequence in GBK (ArgumentError)
from test.rb:8:in `block in <main>'
from test.rb:6:in `each'
from test.rb:6:in `<main>'
理由:
普段はファイルヘッダに#encoding:utf-8を入れるのは役に立たない.
理論はいつも問題の時に閃光することができる.
この文を見てください。Ruby1.9の文字列内符号化と外符号化
解決方法:
外部ファイルがutf-8符号化である場合.
*ファイルを読むときに外符号化:utf-8を指定します. lines = File.readlines('xxx\origin3.txt', :external_encoding => "UTF-8")
*ライン内トランスコード:line.force_encoding(「UTF-8」)は、内部符号化をUTF 8に変更する
* file=File.new(fr).tap{|f|f.set_encoding'utf-8','GBK'}
* set_encoding 'utf-8','GBK‘ # GBK ( UTF8)
* f = File.open 'environment.rb','r:gbk'#utf-8符号化の場合は'r:utf-8'
f = File.open 'environment.rb','r:gbk:utf-8'#utf-8符号化であれば'r:utf-8'
なぜ多くの人がこの問題を起こしたのですか?
win 7の下:
puts "Encoding.default_external=#{Encoding.default_external}"
puts "Encoding.default_internal=#{Encoding.default_internal}"
win 7のデフォルト出力:
Encoding.default_external=GBK
Encoding.default_internal=
デフォルトではgbkが外部符号化されていると考えられていますが、私たちの一般的な習慣ファイルはutf-8です.
はい、わかりました.
+
+==
==
=