5

私のクライアントには、varchar(50) フィールドを使用して名前を格納する古い MS SQL 2000 データベースがあります。彼はこのデータベースを使用して (Web フォーム経由で) データを取得しようとしました。フォーム入力者の何人かは他の国から来ており、これらの人々の何人かが自分の名前を入力したとき、varchar フィールドはおかしくなってしまいました。どうにかしてデータを復元することはできますか?おそらく、ASCII/varchar で解決されたものとその人の出身国に基づいて、その文字が何になるべきかを推測することでしょうか? データの一部:

名前/国/姓または名?
Jířà / CZE / F
Torbjörn / FIN / F
Huszár / HUN / L
Jürgen / DEU / F
Müller / CHE / L
Bumbálková / CZE / L
Doležal / CZE / L
Loïc / DEU / L

ちなみに、Web フォームでは次の content-type が指定されています。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4

4 に答える 4

6

5番目の例から作業。

×はアスキー #195 (C3) です。¼ はアスキー #188 (BC) です。

ミュラーはミュラーであることを意味していると思います。

これが UTF-8 の場合、 http://en.wikipedia.org/wiki/UTF-8#Descriptionに基づく

C3 BC = 1100 0011 1011 1100 です。

UTF-8 マッピングの適用:

(110) 00011 (10) 11 1100

0000 0000 1111 1100

Unicode の 00FC ü

U+00FC ( http://en.wikipedia.org/wiki/Latin_characters_in_Unicodeを参照)

これをプログラムで処理できるように思えます。

最初の例を解決します。

Jiå™ã は実際には JiÅ™ã でした (最後の文字は示されていません)。

正しいジを無視して、

C5 99 c3 AD

(110)0 0101 (10)01 1001 (110)0 0011 (10)10 1101

0159 00ED

ジー

名前はイジーです。ウィキペディアによると、特別な r はチェコ語で、i もそうです。さらに、Jiří ( http://www.google.com/search?q=Ji%C5%99%C3%AD&ie=utf-8&oe=utf-8 ) をググると、たくさんヒットします。私たちはここで勝者です。

2 番目の例、Torbjörn は、説得力があるように聞こえる Torbjörn にうまく対応しています。

私見、これらを人間がチェックする必要はあまりありません。それらは機能しているようです。

于 2008-10-28T01:17:29.747 に答える
1

ロシアの郵便局がそれをしました。消える前に画像を保存した人はいますか?

http://forums.thedailywtf.com/forums/p/7156/133456.aspx

于 2008-10-28T01:28:55.793 に答える
0

基本的に、libiconvを介してそれを突き刺し、UTF8に変換する必要があります。

適切な文字セットの完全なリストはアプリケーションによって異なりますが、国コードに基づいて推測することができます。WikiPediaのこのページから始めてください。

警告:変換を確認するには、人間が必要です。

于 2008-10-28T01:15:04.727 に答える
0

Richard のコメントに加えて、フォームを含む Web ページが文字セット (例: iso-8859-1 == unicode) とエンコーディング (例: utf-8) を指定している場合、標準に準拠したブラウザはその文字セットを使用してフォーム データを送信する必要があります。エンコーディング。Web ページで Unicode が指定されている場合、データ内のランダムな Microsoft コードページに対処する必要はありません。すべて Unicode である必要があります。

于 2008-10-28T03:42:39.877 に答える