Проблема UTF-8, никакая Идея

При использовании ADO.NET DataAdapter обрабатывает это.

, Если Вы хотите обработать его сами, это - путь:

Удостоверяются, что существует ограничение первичного ключа на Ваш столбец ключа.

Тогда Вы:

  1. Делают обновление
  2. , Если обновление перестало работать, потому что запись с ключом уже существует, сделайте вставку. Если обновление не перестало работать, Вы закончены.

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

6
задан Daniel Rikowski 5 July 2009 в 06:57
поделиться

7 ответов

MySQL должен знать, что вы хотите выводить данные в формате UTF-8 - скорее всего, он настроен на отправку как latin1, поэтому ваш браузер видит недопустимые последовательности байтов UTF-8 и выводит «не символ» глиф.

Отправьте запрос «SET NAMES utf8» сразу после открытия соединения MySQL или измените конфигурацию (если возможно).

8
ответ дан 8 December 2019 в 04:09
поделиться

Сделайте следующее:

header('Content-Type: text/html; charset=utf-8');

перед выводом любого содержимого.

2
ответ дан 8 December 2019 в 04:09
поделиться

Вы должны установить кодировку своей веб-страницы.

Есть три способа установить кодировку:

  1. HTML / XHTML : Используйте HTTP-заголовок:

     Content-Type: текст / html; charset = UTF-8
    
  2. HTML : используйте метаэлемент: (Также возможно для XHTML, но несколько необычно)

     
    
  3. Только XHTML : установите кодировку в преамбуле: ( Предпочтительно для XHTML )

     
    

Если вы хотите сначала проверить проблему:

Сначала измените кодировку вручную с помощью браузера. Если это сработает, вы можете установить его в своем HTML-файле. Убедитесь, что вы сбросили ручную кодировку на автоматическое определение, иначе она будет работать на вашей рабочей станции, но не на рабочих станциях ваших пользователей!

Специальность PHP : убедитесь, что ваша внутренняя кодировка установлена также установите UTF-8! Все выходные данные преобразуются в эту кодировку.

Вы можете принудительно использовать внутреннюю кодировку, используя mb_internal_encoding в верхней части каждого файла.

В конце концов : Все это не поможет, если ваш код на самом деле не кодируется UTF-8! Если это так, проверьте, есть ли какие-либо вспомогательные функции, которые могут нарушить кодировку UTF-8.

11
ответ дан 8 December 2019 в 04:09
поделиться

Вероятно, проблема в том, что для подключения к базе данных используется latin1. Это из того, что я знаю по умолчанию во многих настройках MySQL.

Это означает, что даже если вы храните данные как utf-8 в базе данных, вы получите их как latin1, когда вы их извлечете, поскольку кодировка преобразуется в лететь, чтобы соответствовать соединению.

У вас есть два варианта:

1. Измените набор символов соединения по умолчанию на utf-8

. Это может означать проблемы, если у вас есть другие приложения, размещенные на том же сервере базы данных, которые ожидают iso-8859-1 от базы данных, так как при изменении конфигурации вы измените поведение для всех пользователей сервера MySQL.

2. Измените кодировку соединения после каждого подключения к базе данных

Если вы используете PHP5, вы можете использовать встроенную команду:

mysql_set_charset('utf8');

См. http://php.net/manual/en/function.mysql-set- кодировка.

1
ответ дан 8 December 2019 в 04:09
поделиться

utf8_encode устранил мою проблему. Я не уверен, почему (; данные в базе данных - utf8, сайт - utf8 ..

0
ответ дан 8 December 2019 в 04:09
поделиться

Вам также следует проверить заголовки HTML, особенно (если они неверны), как настроен ваш веб-сервер. У меня была аналогичная проблема в прошлом, которая была вызвана конфигурацией apache - он был настроен так, чтобы всегда отправлять кодировку в типе содержимого, и это перезаписывало кодировку, переданную через тег поскольку HTML-страница и веб-сервер различаются этим значением.

0
ответ дан 8 December 2019 в 04:09
поделиться

Этот символ замены Unicode появляется только в случае неправильной кодировки. Итак, в вашем случае вы объявили свои данные как закодированные в UTF-8, но это не так (по крайней мере, та часть, которую вы процитировали). ü , закодированный в ISO 8859-1, - это 0xFC, но это недопустимый октет в UTF-8.

Поэтому вам нужно убедиться, что ваши данные действительно закодированы в UTF-8. Существуют функции, которые могут проверять, соответствует ли данная строка UTF-8, например mb_detect_encoding или this is_utf8 function .

4
ответ дан 8 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: