Как работать с двумя базами данных в utf-8 и iso-8859-1

у меня есть база данных MySQL, которая работает с кодировкой UTF-8, и база данных VisualFox (dbase), которая работает с ISO-8859-1.

У меня куча проблем с кодировками.

Интересно, лучше ли работать с моими html-страницами на iso-8859-1 или utf-8. Лучше преобразовать iso в utf8 или utf8 в iso?

Или, может быть, я должен работать с utf8 на веб-сайте, когда данные из базы данных mysql и iso, когда я работаю с данными из базы данных visualfox? Лучше смешивать или использовать только одну кодификацию.

У меня голова болит и тысячи проблем с кодировкой, экранированием и т.д.! Особенно из-за отсутствия хорошего драйвера для баз данных odbc.

Наконец, мне интересно, если я подключусь к mysql, используя кодификацию iso-8859-1, я получу данные в этой кодировке вместо utf8, в которой хранятся данные?

Какие-нибудь советы?


person Carlos Goce    schedule 28.08.2013    source источник
comment
Вы должны использовать UTF8 везде.   -  person SLaks    schedule 28.08.2013
comment
ISO-8859 может кодировать только часть символов, которые может использовать UTF-8. Если вы используете какие-либо символы, отличные от latin1, у вас практически нет другого выбора, кроме как использовать UTF-8. Хитрость заключается в том, чтобы максимально сохранить все в UTF-8. Преобразуйте данные, поступающие из базы данных VF, как можно скорее и преобразуйте их в формат ISO-8859 как можно позже. Так и должно быть, правда.   -  person deceze♦    schedule 28.08.2013


Ответы (1)


Используйте UTF8 для гибкости.

Используйте функцию PHP utf8_encode(), чтобы устранить проблемы с синхронизацией данных.

person XaxD    schedule 28.08.2013
comment
utf8_encode ничего волшебным образом не исправит; это утверждение должно быть разъяснено много. - person deceze♦; 28.08.2013
comment
какие? utf8_encode() это очень специфическая функция, которая конвертирует кодировку ISO-8859-1 в UTF8... что она волшебным образом не исправляет? - person XaxD; 28.08.2013
comment
Это необходимое уточнение для начинающих. Вам также придется пойти другим путем при отправке чего-либо в базу данных VF. - person deceze♦; 28.08.2013
comment
на самом деле он, вероятно, должен придерживаться UTF8 для всего, но если он хочет вернуться назад, он всегда может использовать utf8_decode(). Однако я не советовал этого делать, потому что UTF гораздо более гибкий. единственным реальным преимуществом ISO является масштабируемость на уровне предприятия, но если ваше приложение потребляет достаточно трафика, чтобы реально рассмотреть возможность изменения кодировки для сокращения мелких затрат на передачу данных, ваше приложение, вероятно, также имеет приличный объем международного трафика. UTF8 по всем направлениям, вероятно, является его лучшим вариантом для общедоступного веб-приложения. - person XaxD; 28.08.2013
comment
Конечно. Но я просто предполагаю, что он по какой-то причине не может переключить свою базу данных VF на UTF-8. - person deceze♦; 28.08.2013
comment
Это корпоративный сайт. База данных VisualFox поступает из приложения ERP, где у компании есть все данные. В базе данных MysQL я пытаюсь работать над созданием всего нового. У меня много проблем, особенно когда данные идут с \n\r или \r\n или \r или просто '. Если количество вхождений символа ' нечетно, база данных выдает ошибку и более странные ошибки, подобные этой. Итак, если я попытаюсь вставить это: данные Brother, это выдаст ошибку, вместо этого я должен вставить данные Brother «с другим». Число должно быть четным! странный. Спасибо вам всем - person Carlos Goce; 29.08.2013
comment
Избегайте лишних одинарных кавычек с помощью addSlashes() - person XaxD; 29.08.2013