很长一段时间以来,我一直使用错误编码的数据库/连接,导致数据库中的希伯来语字符显示为未知语言字符,如下例所示:

我希望用插入错误编码的字符重新导入/更改数据库,以便将希伯来字符显示为希伯来字符,而不是像*"× ×תה מסכי×,×× ×©×™× ×ž×¦×™×¢×™× ×œ×™ כמה ×”× "*那样以未知解析方式显示。
作为记录,当我用php显示这个未知字符sql数据时,它显示为希伯来语。当我试图从phpMyAdmin面板访问它时,它显示为jibrish (这些未知字符)。
尽管数据库中已经插入了一些数据,但是否有任何方法来修复它呢?
发布于 2015-06-24 22:36:52
感觉就像“双重编码”希伯来字符串。
这部分恢复了案文:
UNHEX(HEX(CONVERT('× ×תה מסכי×,××' USING latin1)))
--> '� �תה מסכי�,�� 我不知道是什么导致了�符号。
请给一些手机做SELECT col, HEX(col) FROM ... WHERE ...;。如果存储正确,我希望שלום会给出十六进制D7A9D79CD795D79D。对于“双重编码”,我希望是C397C2A9C397C593C397E280A2C397C29D。
请提供该选择的输出,然后我将工作如何恢复数据。
编辑
我认为发生了这样的事。
SET NAMES latin1撒谎声称客户端具有latin1编码;以及CHARACTER SET utf8。Yod没有像一封信那样跳出来,所以花了一段时间才看到它。CONVERT(BINARY(CONVERT('×™×™123' USING latin1)) USING utf8) ->יי123
因此,我认为这句话会使文本变得清晰。但是要小心,在“修复”整个表之前,先在几行上尝试一下。
UPDATE table SET col = CONVERT(BINARY(CONVERT(col USING latin1)) USING utf8) WHERE ...;如果这不起作用,下面是4修复双重编码,它可能等效,也可能不等效。(注:BINARY(xx)可能与CONVERT(xx USING binary)相同。)
发布于 2015-06-12 22:00:42
我不确定您是否能够对已经存储在数据库中的数据做任何事情。但是,您可以通过确保拥有正确的字符集和排序规则来正确导入希伯来语数据。
utf8_general_ci。utf8_general_ci。例如:
CREATE DATABASE col CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `col`.`hebrew` (
`id` INT NOT NULL AUTO_INCREMENT,
`heb` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`)
) CHARACTER SET utf8
COLLATE utf8_general_ci;INSERT INTO hebrew(heb) values ('שלום');

https://stackoverflow.com/questions/30812412
复制相似问题