繁体   English   中英

TYPO3:indexed_search和编码

[英]TYPO3: indexed_search and encoding

我有TYPO3 v.4.3.2和Indexed Search Engine 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

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

您需要将数据库和Typo3设置为uft-8。 在Typo3中,它具有选项forceCharset = utf-8和setDBinit =在安装工具中设置名称utf-8和设置字符集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

这是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...。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM