5

我的客户有一个旧的 MS SQL 2000 数据库,它使用 varchar(50) 字段来存储名称。他试图使用这个数据库来捕获一些数据(通过网络表单)。一些表单填写者来自其他国家,当这些人中的一些人输入他们的名字时,varchar 字段变得疯狂。是否有可能以某种方式恢复数据?也许通过根据它在 ASCII/varchar 中解析的内容以及该人来自的国家/地区来猜测该字符应该是什么?部分数据:

姓名/国家/地区/名字或姓氏?
Jiřà / 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

顺便说一句,网络表单指定了这个内容类型:

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

4 回答 4

6

从第 5 个示例开始工作。

à 是 ascii #195 (C3)。¼ 是 ascii #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

00FC 是 Unicode ü

U+00FC(见http://en.wikipedia.org/wiki/Latin_characters_in_Unicode

在我看来,您可以以编程方式完成此工作。

现在解决第一个例子:

Jiå™ã实际上是JiÅ™Ã(最后一个字符未显示)。

无视吉,这是正确的,

C5 99 c3 广告

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

0159 00ED

所以名字是:Jiří。维基百科说特殊的 r 是捷克语,i 也是。此外,如果我用谷歌搜索 Jiří ( http://www.google.com/search?q=Ji%C5%99%C3%AD&ie=utf-8&oe=utf-8 ) 我会得到很多点击。我们在这里赢了。

第二个例子,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 的评论:如果包含表单的网页指定了字符集(例如 iso-8859-1 == unicode)和编码(例如 utf-8),那么符合标准的浏览器应该使用该字符集提交表单数据,并且编码。如果您的网页指定了 unicode,那么您不必处理数据中的随机 Microsoft 代码页 - 它应该都是 unicode。

于 2008-10-28T03:42:39.877 回答