TYPO3:indexed_search和encoding

时间:2011-12-14 18:29:41

标签: search encoding utf-8 typo3 iso-8859-1

我有一个TYPO3 v.4.3.2和索引搜索引擎2.12.0。如果我进行搜索,我会看到

Ã-而不是Ö
Ã而不是ü

所以似乎utf8字符表示为ISO-8859-1。如果我查看源代码,我会看到

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

在TS设置中还有一个

page.config.metaCharset = utf-8
page.config.additionalHeaders = Content-Type:text/html;charset=utf-8

所以它是索引搜索扩展名的设置?

1 个答案:

答案 0 :(得分:1)

您需要将数据库和Typo3设置为uft-8。在Typo3中,选项forceCharset = utf-8和setDBinit = set names utf-8并在installtool中设置字符集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

然后我从这里创建了新数据库,然后导入了dumpfile。

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

以下是mysql手册中关于alter table tbl_name CONVERT TO ...

的内容

http://dev.mysql.com/doc/refman/5.0/en/alter-table.html

“如果要更改表格默认字符集和所有字符 列(CHAR,VARCHAR,TEXT)到新的字符集,使用如下语句:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;

警告

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

 ALTER TABLE t1 CHANGE c1 c1 BLOB;
 ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;

这样做的原因是转换为或时没有转换 来自BLOB专栏。 “

如果您需要转换所需的内容,请转储它并使用我的方法或对每列使用ALTER TABLE tbl_name CHANGE ....