我一直在使用 mysql 5.5.41 版本并且遇到了问题。 我将表中特定列的排序规则从 latin1_swedish_ci 更改为 hebrew_bin,这会更改该列中的数据。例如,我在字段中插入了
école
,在转换时,我得到了?cole
。
所以我搜索了一个解决方案并找到了this。您可以看到它指出,为了在更改字符集和排序规则时不丢失数据,您必须先转换为 blob,然后再转换为所需的字符集。我也试过了,只是为了得到יcole
。那么如何在不丢失数据的情况下更改列排序规则。
这些是我对 blob 尝试的查询:-
ALTER TABLE `something` CHANGE `name` `name` BLOB;
ALTER TABLE `something` CHANGE `name` `name` VARCHAR(12) CHARACTER SET hebrew COLLATE hebrew_bin NOT NULL;
请执行
SELECT HEX(col), col FROM ...
查看为“école”存储的内容。 Latin1 看起来像 E9636F6C65。希伯来语,如果我没记错的话,不包括“é”。请参阅http://collation-charts.org/mysql60/mysql604.hebrew_general_ci.html了解可能支持的完整字符集。
假设这是正确的,不要尝试转换为字符集希伯来语;你会丢失信息,比如'é'被变成'?'。
如果您需要同时存储希伯来字符和法语重音字符(等),请使用 utf8。