重複の可能性:
Ruby で文字列を windows-1252 から utf-8 に変換するにはどうすればよいですか?
utf8 文字を iso8859-1 に変換するにはどうすればよいですか
ここに私の問題があります。内部 LAN に配布したツールがあり、外部 Web サーバーがジョブ/データを内部 LAN に提供しています。その結果、スヌーピーの人には見られたくないデータを渡すことがよくあります。言い換えれば、誰かが私の SQL 文字列を見たとしても世界の終わりではありませんが、見られたくないのです。ガラスの引き戸のデッドボルトのようなものです。それは誰もが本当に決心するのを止めることはありませんが、ランダムな好奇心旺盛なスクリプトキディーを思いとどまらせるはずです.
だから私は PHP で書いた単純な暗号のセットを持っています。最近、ツールセットの次の拡張機能は Ruby である必要があると判断しましたが、それらの新しいツールは、以前に構築した PHP ツールのセットと通信する必要があります。すべての PHP ツールを再構築したくありません。そのため、Ruby コードで PHP 暗号を正確に再現する必要があります。これにより、Ruby が文字列を暗号化するときに PHP ツールで暗号化された文字列が返され、暗号化された文字列が Ruby ツールで解読されます。
私の単純な暗号は、修正された Caesar 暗号です。Caesar 暗号 (名前に慣れていない人向け) は、すべての文字を 1 つの既知の文字数だけシフトする場所です。つまり、3 シフトすると、A が D に、B が E に、C が F に、というようになります。真の Caesar 暗号は次のようになります。 3のシフトがZをCに変えるようにラップを必要とします。ただし、私の場合はそうしません。Zに3を追加するだけで、PHPでutf8_encodeおよびutf8_decode関数を使用します。
今度は、Ruby で同等のものが必要です。私はそれを見つけたと思った
str.encode('utf-8')
しかし、それはこのエラーを返します
未定義のメソッド「エンコード」 #
私のグーグルは、何らかの理由でRubyにはこれに対する単一の解決策がないことを示唆しています。Ruby は、文字列を UTF-8 にエンコードする前に、文字列の現在のエンコードを知る必要があります。少なくともそれが私が問題を理解した方法です。
したがって、入力される文字列は、Ruby 1.8.7 のデフォルトとなります。(これが役立つ場合...私はUbuntu 12.04デスクトップ、米国、英語を使用しており、デフォルトのリポジトリでapt-getを使用してRubyを取得したと思います。)SQLクエリステートメントのようなさまざまな文字列が必要です-「SELECT * FROM テーブル WHERE id = ?" PHP の md5() 出力によって生成された文字列。他のすべての文字列は、すべて米国英語の大文字、小文字、および数字のカテゴリに分類する必要があります。
ありがとう