【问题标题】:TYPO3: indexed_search and encodingTYPO3:indexed_search 和编码
【发布时间】:2011-12-14 18:29:40
【问题描述】:

我有一个 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

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

【问题讨论】:

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


    【解决方案1】:

    您需要将数据库和 Typo3 设置为 uft-8。在 Typo3 中,它带有选项 forceCharset=utf-8 和 setDBinit = 在 installtool 中设置名称 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 ...。

    【讨论】:

    • 但是网站的其他部分显示正确。只有 indexed_search 会出现问题。 [forceCharset]utf-8[setDBinit]set names utf8,我找不到 set character set utf-8。表的排序规则是utf8_unicode_ci,但phpMyAdmin 写为所有表的摘要latin1_swedish_ci。也许这就是原因?我应该像ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8_unicode_ci;这样转换数据库吗?
    • 好的,我还发现这仅适用于某些页面。如果我用另一个关键词进行搜索,一切都会正确显示......
    • @testing:我已经扩展了我的答案以涵盖 mysql 数据库 ISO-8859-1 到 utf-8 的转换。
    • 所以我需要使用您提到的命令进行 shell 访问。我不知道这是否可能。 ALTER TABLE 不起作用吗?正如我之前提到的,只有一些页面会受到这种影响。
    • @testing:是的,这么想。看我的回答。 ALTER TABLE Con​​vert 不转换列的内容,而只转换列元数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    相关资源
    最近更新 更多