Search 类型3:索引搜索和编码

Search 类型3:索引搜索和编码,search,encoding,utf-8,typo3,iso-8859-1,Search,Encoding,Utf 8,Typo3,Iso 8859 1,我有一个打字错误。4.3.2和索引搜索引擎2.12.0。如果我搜索,我会看到一个 Ö而不是Ö Ã¼而不是ü 因此,utf8字符似乎表示为ISO-8859-1。如果我查看我看到的源代码 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 因此,这是索引搜索扩展的设置?您需要将数据库和Typo3设置为uft-8。在Typo3中,它在installtool中具有选项forceCharset=utf-

我有一个打字错误。4.3.2和索引搜索引擎2.12.0。如果我搜索,我会看到一个

Ö而不是Ö
ü而不是ü

因此,utf8字符似乎表示为ISO-8859-1。如果我查看我看到的源代码

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

因此,这是索引搜索扩展的设置?

您需要将数据库和Typo3设置为uft-8。在Typo3中,它在installtool中具有选项forceCharset=utf-8和setDBinit=set名称utf-8和set字符集utf-8。要在命令行类型中将mysql数据库转换为utf-8,请执行以下操作:

使用以下命令转储原始数据库:

mysqldump -u root -p --opt --default-character-set=latin1 --skip-set-charset  DBNAME > DBNAME
然后使用sed,我将所有出现的单词latin1更改为utf8:

sed -e 's/latin1/utf8/g' -i ./DBNAME.sql
从这里我创建了新的数据库,然后导入了转储文件

mysql -p -e "create database DBNAME"
mysql -p --default-character-set=utf8  DBNAME < DBNAME.sql
警告

前面的操作在字符集之间转换列值。 如果在一个字符集中有一列(如 但是存储的值实际上使用了其他一些不兼容的 字符集(如utf8)。在这种情况下,您必须执行以下操作: 每一列:

 ALTER TABLE t1 CHANGE c1 c1 BLOB;
 ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
这样做的原因是,转换为或时没有转换 来自BLOB列。"


如果您需要转换内容,您需要转储内容并使用我的方法,或者对每一列使用ALTER TABLE tbl_name CHANGE…。

但网站的其他部分显示正确。只有索引搜索才会出现问题。
[forceCharset]
utf-8
[setDBinit]
集名称utf8
,我找不到
集字符集utf-8
。表的排序规则是
utf8\u unicode\u ci
,但phpMyAdmin写的是所有表的摘要
拉丁1\u瑞典语\u ci
。也许这就是原因吗?我应该像这样转换数据库
改变表tbl\u name转换为CHARACT>ER SET utf8_unicode_ci;
?好的,我还发现这只适用于某些页面。如果我用另一个关键字搜索,所有内容都正确显示…@测试:我已经扩展了我的答案,以涵盖mysql数据库ISO-8859-1到utf-8的转换。因此,我需要使用您提到的命令进行shell访问。我不知道这是否正确2.
ALTER TABLE
无效吗?正如我前面提到的,只有一些页面与此效果有关。@测试:是的,这样认为。参见我的答案。ALTER TABLE Convert不是转换列的内容,而是转换列的元数据。
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
 ALTER TABLE t1 CHANGE c1 c1 BLOB;
 ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;