При использовании ADO.NET DataAdapter обрабатывает это.
, Если Вы хотите обработать его сами, это - путь:
Удостоверяются, что существует ограничение первичного ключа на Ваш столбец ключа.
Тогда Вы:
можно также сделать это наоборот, т.е. сделать вставку сначала и сделать обновление, если вставка перестала работать. Обычно первый путь лучше, потому что обновления делаются чаще, чем вставляет.
MySQL должен знать, что вы хотите выводить данные в формате UTF-8 - скорее всего, он настроен на отправку как latin1, поэтому ваш браузер видит недопустимые последовательности байтов UTF-8 и выводит «не символ» глиф.
Отправьте запрос «SET NAMES utf8» сразу после открытия соединения MySQL или измените конфигурацию (если возможно).
Сделайте следующее:
header('Content-Type: text/html; charset=utf-8');
перед выводом любого содержимого.
Вы должны установить кодировку своей веб-страницы.
Есть три способа установить кодировку:
HTML / XHTML : Используйте HTTP-заголовок:
Content-Type: текст / html; charset = UTF-8
HTML : используйте метаэлемент: (Также возможно для XHTML, но несколько необычно)
Только XHTML : установите кодировку в преамбуле: ( Предпочтительно для XHTML )
Xml version = "1.0" encoding = "UTF-8"?>
Если вы хотите сначала проверить проблему:
Сначала измените кодировку вручную с помощью браузера. Если это сработает, вы можете установить его в своем HTML-файле. Убедитесь, что вы сбросили ручную кодировку на автоматическое определение, иначе она будет работать на вашей рабочей станции, но не на рабочих станциях ваших пользователей!
Специальность PHP : убедитесь, что ваша внутренняя кодировка установлена также установите UTF-8! Все выходные данные преобразуются в эту кодировку.
Вы можете принудительно использовать внутреннюю кодировку, используя mb_internal_encoding
в верхней части каждого файла.
В конце концов : Все это не поможет, если ваш код на самом деле не кодируется UTF-8! Если это так, проверьте, есть ли какие-либо вспомогательные функции, которые могут нарушить кодировку UTF-8.
Вероятно, проблема в том, что для подключения к базе данных используется latin1. Это из того, что я знаю по умолчанию во многих настройках MySQL.
Это означает, что даже если вы храните данные как utf-8 в базе данных, вы получите их как latin1, когда вы их извлечете, поскольку кодировка преобразуется в лететь, чтобы соответствовать соединению.
У вас есть два варианта:
1. Измените набор символов соединения по умолчанию на utf-8
. Это может означать проблемы, если у вас есть другие приложения, размещенные на том же сервере базы данных, которые ожидают iso-8859-1 от базы данных, так как при изменении конфигурации вы измените поведение для всех пользователей сервера MySQL.
2. Измените кодировку соединения после каждого подключения к базе данных
Если вы используете PHP5, вы можете использовать встроенную команду:
mysql_set_charset('utf8');
utf8_encode устранил мою проблему. Я не уверен, почему (; данные в базе данных - utf8, сайт - utf8 ..
Вам также следует проверить заголовки HTML, особенно (если они неверны), как настроен ваш веб-сервер. У меня была аналогичная проблема в прошлом, которая была вызвана конфигурацией apache - он был настроен так, чтобы всегда отправлять кодировку в типе содержимого, и это перезаписывало кодировку, переданную через тег
поскольку HTML-страница и веб-сервер различаются этим значением.
Этот символ замены Unicode появляется только в случае неправильной кодировки. Итак, в вашем случае вы объявили свои данные как закодированные в UTF-8, но это не так (по крайней мере, та часть, которую вы процитировали). ü , закодированный в ISO 8859-1, - это 0xFC, но это недопустимый октет в UTF-8.
Поэтому вам нужно убедиться, что ваши данные действительно закодированы в UTF-8. Существуют функции, которые могут проверять, соответствует ли данная строка UTF-8, например mb_detect_encoding
или this is_utf8
function .