0

重複の可能性:
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() 出力によって生成された文字列。他のすべての文字列は、すべて米国英語の大文字、小文字、および数字のカテゴリに分類する必要があります。

ありがとう

4

1 に答える 1

0

Encodingをチェックして、使用しているエンコード方法のドキュメントを参照してください。これが最初に必要な形式だと思います。

于 2012-08-15T16:03:49.993 に答える