私は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を使用するかどうかは実際問題ではないので、問題の内容を混乱させる。任意のアイデア?*
よろしく、 ヨハン