我的客户端有一个旧的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
顺便说一下,Web表单指定了这个内容类型:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
答案 0 :(得分:6)
从第5个例子开始工作。
Ã是ascii#195(C3)。 ¼是ascii#188(BC)。
我猜Müller应该是Müller。
如果这是UTF-8,基于 http://en.wikipedia.org/wiki/UTF-8#Description
我们有 C3 BC = 1100 0011 1011 1100
应用UTF-8映射:
(110)00011(10)11 1100
<00> 0000 0000 1111 110000FC是Unicodeü
U + 00FC(见http://en.wikipedia.org/wiki/Latin_characters_in_Unicode)
在我看来,您可以通过编程方式完成此任务。
现在解决第一个例子:
Jiå™ã实际上是JiÅ™Ã(最后一个角色未显示)。
忽略Ji,这是正确的,
C5 99 c3 AD
(110)0 0101(10)01 1001(110)0 0011(10)10 1101
0159 00ED
RI
所以名字是:Jiří。维基百科说特殊的r是捷克语,我也是。此外,如果我googleJiří(http://www.google.com/search?q=Ji%C5%99%C3%AD&ie=utf-8&oe=utf-8)我得到了很多热门歌曲。我们在这里获胜。
第二个例子,Torbjörn,很好地映射到Torbjörn,听起来令人信服。
恕我直言,人们不需要对这些人进行检查,他们似乎只是工作。
答案 1 :(得分:1)
俄罗斯邮局做到了。有没有人在它消失之前保存图像?
答案 2 :(得分:0)
你基本上需要通过libiconv戳它,将它转换为UTF8。
相应字符集的完整列表将取决于您的应用程序,但您可以根据国家/地区代码进行一些猜测。从this page on WikiPedia开始。
警告:您需要人员验证每次转换。
答案 3 :(得分:0)
进一步理查德的评论:如果包含表格的网页指定了一个字符集(例如iso-8859-1 == unicode)&amp;编码(例如utf-8)然后符合标准的浏览器应使用该字符集和编码提交表单数据。如果您的网页指定了unicode,那么您不必处理数据中随机的Microsoft代码页 - 它应该都是unicode。