От сопоставления Modern_Spanish_CI_AI (в SQL Server) до UTF-8 (в MySQL) - PullRequest
2 голосов
/ 30 января 2011

Я пишу скрипт PHP для импорта некоторых данных из базы данных Microsoft SQL Server в мою базу данных MySQL.

Сортировка в SQL Server - Modern_Spanish_CI_AI (поэтому я предполагаю, что кодировка ASCII), и в моей базе данных MySQL я использую кодировку UTF-8 и utf8_unicode_ci в качестве сопоставления.

Когда я импортирую данные, я получаю неправильные символы, соответствующие испанской букве С. Я пытался использовать PHP-функции utf8_encode ($ string) и mb_convert_encoding ($ string, "UTF-8") без какого-либо успеха (я получил разные неправильные символы, но все еще неправильные).

Возможно, это помогает: Определение таблицы в SQL Server:

CREATE TABLE [dbo].[myTable] (
[myField] varchar(2) COLLATE Modern_Spanish_CI_AS NOT NULL,

Определение таблицы в MySQL

CREATE TABLE `myTable` (
`myField` varchar(2) COLLATE utf8_unicode_ci NOT NULL,

1 Ответ

3 голосов
/ 30 января 2011

У меня нет опыта работы с SQL-сервером, но из беглого взгляда на эта таблица сопоставления , Modern_Spanish_CI_AI кажется, по сути, набором символов Windows-1252, возможно, с некоторыми испанскими правилами сортировки / сравнения на сверху.

Вы должны быть в состоянии преобразовать данные как это:

$utf8 = iconv("windows-1252", "utf-8", $input);

попробуйте. Однако при использовании PHP для этого также играет роль кодировка соединения с каждой базой данных - если она все еще не работает, вам нужно показать еще немного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...