2017-02-02 12 views
0

私は、フランス語/スペイン語などの言語文字を持つさまざまなSQLファイルを持っています。ウィンドウズでは、特定の言語の文字を見ることができ、それがLinuxに転送されたときに奇妙な文字が表示されます。WindowsとLinuxの文字セットの問題

私は、WindowsがWINDOWS-1252、WINDOWS-1258、およびiso-8859-1のような異なる文字セットを使用していることを理解しています。

LinuxでWindowsに似ているcharsetを変更するにはどうすればいいですか?LinuxからのクエリをトリガするときにDBに奇妙な文字を挿入しないようにしますか?

ありがとうございます。 Windowsで

+0

ようこそ!オントピックに関する詳細については、[ツアー](https://stackoverflow.com/tour)をご覧ください。あなたは[DB管理者](https://dba.stackexchange.com/)のサイトで頼む方が良いかもしれません。 – cxw

+3

これはPerlというタグが付いているので、DBIを使用していると思いますか?バグのあるコードを表示すると、入力ファイルを読むときにエンコーディングを変更するだけの簡単な操作になるはずです。また、どのデータベースサーバーを使用していますか? – ikegami

+0

私はDBIモジュールではなくperlコードとともにsqlplusを使用しています。これは、挿入、更新、プロシージャー、トリガー、およびビューを持つだけではないためです。 – user1676886

答えて

0

は、我々はあなたがメモ帳で開き++とファイルが使用しているエンコーディング何を見て、あなたはまた、UTF-8に変換することができ、特定の言語の文字

を見ることができます。

+3

いいえ、Notepad ++が推測しているエンコードを見ることができます。ファイルがどのエンコーディングを使用しているかを知るには、それを書いた人に尋ねる必要があります。 –

+0

これはメモ帳++を使用して変更することができるので、依然として有用なアドバイスです。それが間違っていない限り、ほとんどの時間はうまくいくはずです。しかし、それはあなた自身を推測するよりも優れています。 – simbabque

+0

私はperl、sqlplusを使用してFBのデプロイメントを自動化しようとしています。 DBチームが使用している文字セットを教えてくれることは望ましくありません。ワークフローはWINDOWS-> SCM-> Linux-> DB – user1676886

1

問題を正しく理解していれば、非ASCII文字を含むさまざまなウィンドウエンコーディングでSQLスクリプトを作成できます。これらのスクリプトをLinuxで実行したいとします。

私はあなたのLinuxのSQLパーサーが扱うことができるもの、おそらくユニコードUTF-8にファイルを可逆的に変換したいと思うでしょう。この種の変換は、iconv(コマンドラインユーティリティ、ライブラリもあると思います)で行うことができます。

しかし、必ずしも自動的に検出されるわけではないため、各ファイルの元のエンコーディングがわかっているかどうかはわかりませんが...スクリプトファイルの作成者にスクリプトを指定したエンコーディング。

+0

です。Linuxでiconvコマンドとrecodeコマンドの両方を使用しようとしましたが、これらの2つのコマンドで問題が解決されませんでした。私は元のエンコーディングを決定するためにエドです。ところで、私はperl、sqlplusを使用してDBの配置を自動化しようとしています。 – user1676886

+0

他にも言及したように、自動検出が不完全であるため、ソースコードを特定することを*知っている方が良いです。しかし、これをやろうとするユーティリティーやライブラリがあります。「シャーデット」を見てみると、さまざまな図書館や港があると思います。 –

0

Encodeまたはutf8モジュールを使用します。 通常、SQLまたはMySQLの場合、DBエンコーディングをあなたが好むものに設定します。最近では、大部分のキャラクタセットをサポートするためにUTF-8に設定されています。

しかし、この場合、必要なものと一致するようにエンコードすることができます。これは機能します。

use Encode qw(decode encode); 
$data = encode("utf8", decode("iso-8859-1", $data)); 
関連する問題