0

私は現在、テキストの一部を別のアプリケーションからリモートで取得するアプリケーション ( App1 ) を作成しています (これをApp2と呼びましょう)。世界中にApp2のインスタンスがいくつかあり、それらはすべてローカル システム コード ページに従って文字列を解釈します。App2はユニコードに対応していません。

App1はテキストのコード ページに関するヒントなしでApp2からテキストを取得しますが、後の時点で、テキストを正しく解釈するためにコード ページを選択するための手動プロセスが実行されることが予想されます。

テキストのコード ページを自動的に決定する以前の試みは失敗しました。

それまでの間、手動で決定するまでの間、このデータは MySQL データベースに保存する必要があります。
このデータを保存する最良の方法は何ですか? 具体的には、ここで採用するのに最適なものは何CHARSETですかCOLLATION?

フィールドの文字セットに対して有効でない場合、MySQL はフィールドへの文字の挿入を許容しないと思います。

データベースに挿入する前に、コード ページを検出してデータを Unicode に変換できれば理想的ですが、これを一貫して確実に行う方法がわかりません。

4

2 に答える 2

3

文字セットが本当にわからない場合は、バイナリデータとしてのみ保存できます。これにより、すべてのコンテンツが保持されます(何も壊れません)。テキストとして使用する場合は、エンコーディングを推測する必要があります。

于 2011-03-09T10:28:03.053 に答える
1

このデータを保存する最良の方法は何ですか?

唯一の正しい方法は、App2 がデータのエンコーディングに関する情報を送信することです。

その情報を使用して、データベースに挿入する前に Unicode に変換できます。それが最適でしょう。

すべてのマルチバイト ライブラリには、特定の明確なバイト値を見てエンコーディングを推測する関数がありますが、特に着信データに何らかのエンコーディングが含まれている可能性がある場合は、非常に信頼性が低くなります。

于 2011-03-09T10:24:05.923 に答える