TYPO3: indexed_search и кодировка - PullRequest
       36

TYPO3: indexed_search и кодировка

0 голосов
/ 14 декабря 2011

У меня 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 Ответ

1 голос
/ 14 декабря 2011

Вам нужно установить базу данных и Typo3 в uft-8.В Typo3 это происходит с параметром forceCharset = utf-8 и setDBinit = набор имен utf-8 и набор символов utf-8 в installtool.Чтобы преобразовать базу данных 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 об изменении таблицы 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;

Причина, по которой это работает, заключается в том, чтоnversion при конвертации в или из BLOB-столбцов."

Если вам нужно конвертировать контент, вам нужно либо выгрузить его и использовать мой метод, либо использовать ALTER TABLE tbl_name CHANGE ... для каждого столбца.

...