2011-09-10 13 views
1

私はRuby 3.0でデータベースとしてSQL Server 2008 R2を使用してMacOS上でアプリケーションを開発しています。私はfreetdsとtiny_tdsに接続しています。freetds経由でLinux上のSQL ServerからRails 3アプリケーションへの文字エンコードが間違っています

SQL Server Management Studioでデータを見るときに文字列が正しく表示され、データをRails UIに戻して正しく表示されるような拡張文字を使用してスカフォールドからデータを保存すると。

freetdsとtiny_tdsを使って同じデータベースに接続するLinuxマシンにアプリケーションをデプロイすると、UIで文字が文字化けしてしまいます。私はLinuxサーバを介してデータを保存すると文字がブラウザで正しく表示されているが、SSMSのデータを見たときに、文字を符号化して読めないです(私はÞÞððを入力)し、SSMSでこれを取得されています:

ÞÞðð 
私はdatabase.ymlの中で、このラインを設定している

Su�urnes 

encoding: utf8 

それは、D

この私は、MacからDBに書き込まSuðurnesのためのLinuxサーバからブラウザで取得します何も変えてはいけない。私はまた、freetds.confファイルに次の行を設定します。

client charset = UTF-8 

SQLデータベースは、CODEPAGEとしてIcelandic_CI_ASを持っているが、私はそれは、Macマシンから正しく動作しているので、それが故障ではありません確信しています。

私はPassenger apacheとWEBrickの両方でこれをテストしたので、これを引き起こすのはApacheではないと思います。

私はそれをMacと同じように動作させるために変更する必要があるLinux上の設定はありますか?

基本的には、値を前後に変換しているWebサーバーとデータベースの間に何かがあります。

EDIT: * tsqlコマンドラインツールを使用してdbをクエリすると、テキストの正しいエンコーディングが得られます。私がこれを理解すると、これはパスです: Webクライアント> Apache> Railsアプリケーション> Tiny_tds> Freetds> SQL Server 問題はApacheサイトまたはレールアプリケーション自体にある必要があります。私がApacheやWebBrickを使用するかどうかは実際問題ではないので、問題の内容を混乱させる。任意のアイデア?*

よろしく、 ヨハン

答えて

1

問題は、ファイルfreetds.confが問題の原因となった指定されたエンコーディングいたことでした。また、database.ymlファイルにエンコーディングが指定されていないことを確認しなければなりませんでした。