5

У меня есть база данных с несколькими таблицами. База данных и таблица и каждая строка таблицы установлены в utf8_romanian_ci .

Каждое имя, которое я импортирую и которое содержит диакритические знаки, не будет отображаться правильно.

Например: если я MaÂehx в таблицу, у меня будет только M

Данные из таблицы импортируются из csv файла. В Excel диакритические знаки выглядят нормально.

Как я могу решить это?

1 ответ1

4

UTF-8 - непостоянная хозяйка. Для типичного веб-приложения вы должны установить UTF-8 на многих уровнях. Даже если код phpMyAdmin хорошо работает с UTF8, он не работает в вакууме: важна конфигурация сервера. Так же как и база данных, и источник данных для базы данных. Давайте суммируем области потенциального трения в общем приложении с особым акцентом на областях, представляющих интерес для phpMyAdmin.

А. Источник данных

Когда данные импортируются в базу данных, например, из текстового файла, они должны иметь правильную кодировку. Диакритические знаки могут отображаться в Excel, но кодировка может быть любой. Таким образом, вы можете иметь CSV-файл, который выглядит правильно, но не импортируется должным образом. Вы можете проверить и преобразовать кодировку вашего CSV-файла в текстовом редакторе, таком как EditPad, или в IDE, например, Komodo. В Notepad++, который есть у многих людей, вы можете выбрать "Кодировка", чтобы увидеть текущую кодировку, а также выбрать «Кодировка / Преобразовать в UTF8», если это необходимо.

Б. В вашей базе данных. Набор символов таблицы и параметры сортировки должны быть установлены в UTF-8. Похоже, вы, возможно, уже сделали это.

Если нет, вам нужно что-то вроде:

ALTER TABLE MyTable
DEFAULT CHARACTER SET utf8,
COLLATE utf8_general_ci;

Это общая настройка, но ваш румынский сборник тоже должен работать.

C. Подключение к базе данных. Вам нужно что-то вроде:

$connectDSN = "mysql:host={$db_host};dbname={$db_name};charset=UTF-8";

PhpMyAdmin должен подключиться правильно. На целевой странице вы должны увидеть

Server charset: UTF-8 Unicode (utf8) 

Если нет, продолжайте читать.

D. php должен обрабатывать UTF8. В php.ini вам нужно что-то вроде:

default_charset = UTF-8     
mbstring.language = Neutral 
mbstring.internal_encoding = UTF-8      
mbstring.encoding_translation = On      
mbstring.http_input = auto      
mbstring.http_output = UTF-8        
mbstring.detect_order = auto        
mbstring.substitute_character = “0xFFFD”    

Вы можете проверить настройки вашего сервера с помощью phpinfo(). На общедоступном хосте у вас обычно нет доступа к php.ini, и вам нужно изменить настройки непосредственно в скрипте. Кстати, не забывайте использовать функции mb.

E. настройка заголовка

Чтобы браузер знал, что он получает, он должен получить заголовок, такой как следующий, отправленный php:

<?php  header('Content-type: text/html; charset=UTF-8');   ?>

Это не должно быть проблемой с phpMyAdmin. В Firefox, используя расширение для веб-разработчиков, вы можете перейти в Информация / Просмотр информации о странице. На вкладке Общие это покажет вам кодировку.

F. HTML метатег

Это рекомендуется, чтобы помочь браузеру.

<meta charset="UTF-8">

Это не должно быть проблемой с phpMyAdmin. Снова проверьте в браузере, какую кодировку он видит.

Г. Шрифт

Браузер может не иметь шрифта для отображения некоторых символов, хотя современные версии довольно хороши в отношении резервных шрифтов. Это, вероятно, не проблема в вашем случае.

Так что есть много мест, где все может пойти не так.

Надеюсь, что это поможет вам определить проблему!

Когда все выстраивается, тогда магия ... Вы получаете UTF8 везде.

И не забывайте:

ಬಾ ಇಲ್ಲಿ ಸಂಭವಿಸು ಇಂದೆನ್ನ ಹೃದಯದಲಿ

ನಿತ್ಯವೂ ಅವತರಿಪ ಸತ್ಯಾವತಾರ

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .