Php 如何将希伯来语数据库从拉丁语1_瑞典语ci转换为utf8?

Php 如何将希伯来语数据库从拉丁语1_瑞典语ci转换为utf8?,php,mysql,utf-8,character-encoding,Php,Mysql,Utf 8,Character Encoding,我有一个希伯来语的新闻网站。数据库中的所有希伯来语数据都以拉丁语1_瑞典语ci编码存储 除了通过phpMyAdmin转换列编码之外,我还需要转换数据本身 有什么简单的方法可以做到这一点吗 丹尼尔。因为拉丁语不包括希伯来语字符,所以你有一种特殊形式的混乱。但是,它是可以修复的。但首先,我们需要知道在进行插入时使用了什么编码。也许是希伯来语,也许是utf8 要想知道,就去做吧 SELECT col, HEX(col) FROM tbl WHERE ... 例如:א,在utf8中为十六进制D790;

我有一个希伯来语的新闻网站。数据库中的所有希伯来语数据都以拉丁语1_瑞典语ci编码存储

除了通过phpMyAdmin转换列编码之外,我还需要转换数据本身

有什么简单的方法可以做到这一点吗

丹尼尔。

因为拉丁语不包括希伯来语字符,所以你有一种特殊形式的混乱。但是,它是可以修复的。但首先,我们需要知道在进行插入时使用了什么编码。也许是希伯来语,也许是utf8

要想知道,就去做吧

SELECT col, HEX(col) FROM tbl WHERE ...
例如:א,在utf8中为十六进制D790;在希伯来语中,应该是E0

如果文本是utf8,主要是Dxxx,我们可以执行两步修改来修复它:

ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;
如果是希伯来语,那么我认为需要三个步骤:

ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET hebrew ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;
3个步骤中的前2个步骤是关于编码是什么;3 ALTER转换列定义和字节E0->D790等

更新


您的测试用例在哪些方面有所不同?

拉丁文1甚至可以包含希伯来文字符吗?它在utf8中变成了D790。但第二行:ALTERTABLE pages修改列标题VARCHAR255字符集utf8;留下一个空列。
CREATE TABLE h2u ( c VARCHAR(9) CHARACTER SET latin1 );
INSERT INTO h2u (c) VALUE (UNHEX('D790'));
SELECT c, HEX(c), LENGTH(c), CHAR_LENGTH(c) FROM h2u;
+------+--------+-----------+----------------+
| c    | HEX(c) | LENGTH(c) | CHAR_LENGTH(c) |
+------+--------+-----------+----------------+
| ×   | D790   |         2 |              2 |
+------+--------+-----------+----------------+

# Now to fix it...
ALTER TABLE h2u MODIFY COLUMN c VARBINARY(9);
ALTER TABLE h2u MODIFY COLUMN c VARCHAR(9) CHARACTER SET utf8;
SELECT c, HEX(c), LENGTH(c), CHAR_LENGTH(c) FROM h2u;
+------+--------+-----------+----------------+
| c    | HEX(c) | LENGTH(c) | CHAR_LENGTH(c) |
+------+--------+-----------+----------------+
| א    | D790   |         2 |              1 |
+------+--------+-----------+----------------+