如何在不丢失或更改数据的情况下更改列排序规则?

问题描述 投票:0回答:1

我一直在使用 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;
mysql sql database character-encoding collation
1个回答
0
投票

请执行

SELECT HEX(col), col FROM ...
查看为“école”存储的内容。 Latin1 看起来像 E9636F6C65。希伯来语,如果我没记错的话,不包括“é”。请参阅http://collation-charts.org/mysql60/mysql604.hebrew_general_ci.html了解可能支持的完整字符集。

假设这是正确的,不要尝试转换为字符集希伯来语;你会丢失信息,比如'é'被变成'?'。

如果您需要同时存储希伯来字符和法语重音字符(等),请使用 utf8。

© www.soinside.com 2019 - 2024. All rights reserved.