2011-12-14 5 views
0

У меня есть TYPO3 v. 4.3.2 и индексированная поисковая система 2.12.0. Если я делаю поиск я вижу ü вTYPO3: indexed_search и кодировка

a- вместо Ö
вместо ü

Таким образом, кажется, что 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

Вам необходимо установить базу данных и Typo3 в uft-8. В Typo3 это с параметром forceCharset = utf-8 и setDBinit = установить имена utf-8 и установить набор символов utf-8 в installtool. Для преобразования базы данных MySQL в utf8 в командной строке введите:

сбрасывали оригинальный БД с помощью следующей команды:

mysqldump -u root -p --opt --default-character-set=latin1 --skip-set-charset DBNAME > DBNAME 

Затем с помощью СЭД Я изменил все вхождения слова 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 писало о альтер таблице имя_таблице 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 имя_таблицы CHANGE ... для каждого столбца.

+0

Но корректно отображаются другие части сайта. Только indexed_search создает проблемы. '[forceCharset]' is 'utf-8',' [setDBinit] 'is' 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

+0

ОК, я также выяснил, что это верно только для некоторых страниц. Если я сделаю поиск с другими ключевыми словами, все будет правильно отображаться ... – testing

+0

@testing: Я расширил свой ответ, чтобы охватить базу данных MySQL-8859-1 для преобразования utf-8. – Bytemain

Смежные вопросы