質問

私は、私は私の共有ウェブホスティングではcronで実行(LIB /作業ディレクトリ内の)rakeタスクを持っています。問題は、私はケースなステートメントを使用してUTF-8文字列を比較したいが、私のソースコードはUTF-8エンコードされていないということです。私はUTF-8としてソースコードを保存した場合、私はそれを起動しようとするとエラーがあります:(

私は何をすべきか?

外部UTF-8 txtファイルからこの文字列を読み取ることができますか?

P.S。私は、Ruby 1.8を使用しています。

P.S。私はこの方法を比較する意味:

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
役に立ちましたか?

解決

私はあなたがBOMは、のないのUTF-8のために必要であるとしてあなたのテキストエディタを変更する必要があると思います。 UTF-8は、バイト順序依存ではありません。詳細については、リンクテキストを参照してください。

他のヒント

私は私の問題は、ケースなステートメントではないことがわかった。

問題は、私はUTF-8形式で私のソースコードを保存するとき、私のテキストエディタは、そのエンコーディングがUTF-8であることを示すために先頭に3バイト(BOM)を追加するということでした。

  

Q:?BOMとは何である

     

A:のバイトオーダーマーク(BOM)は、文字コードで構成されてい   それはとして使用することができるデータストリームの始めにU + FEFF   主にマークされていないのバイト順と符号化形式を定義する署名   プレーンテキストファイル。いくつかの上位レベルのプロトコルの下では、BOMの使用であってもよいです   そのプロトコルで定義されたUnicodeデータストリームにおける必須の(又は禁止)。

UTF-8、UTF-16、UTF-32&BOMする

私が手にエラーが発生しました:

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression

activesupportののレールからmb_chars方法を使用してみてください枠組みます:

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top