簡體   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