Лучший способ хранить текст с неопределенной кодовой страницей в базе данных MySQL - PullRequest
0 голосов
/ 09 марта 2011

В настоящее время я пишу приложение ( App1 ), которое удаленно извлекает части текста из другого приложения (назовем его App2 ).В мире существует несколько экземпляров App2 , и все они интерпретируют свои строки в соответствии с их локальной системной кодовой страницей. App2 не поддерживает Unicode.

App1 извлекает текст из App2 без каких-либо указаний относительно кодовой страницы текста, но этоОжидается, что позднее будет предпринят ручной процесс выбора кодовой страницы для правильной интерпретации текста.

Предыдущие попытки автоматически определить кодовую страницу текста не увенчались успехом.

В то же время, в ожидании ручного определения, эти данные должны храниться в базе данных MySQL.
Каков наилучший способ хранения этих данных? В частности, что бы CHARSET и COLLATIONлучше всего использовать здесь?

Я считаю, что MySQL не допустит вставки символов в поле, если они недопустимы для кодировки поля.

Было бы идеально, если бы я мог обнаружить кодовую страницуи преобразовать данные в Unicode перед вставкой в ​​базу данных, но я не знаю, как это можно сделать последовательно и надежно.

Ответы [ 2 ]

3 голосов
/ 09 марта 2011

Если вы действительно не знаете набор символов, то вы можете сохранить его только в виде двоичных данных.Это сохранит все содержимое (ничего не будет повреждено).Когда вы попытаетесь использовать его в качестве текста, вам придется угадывать кодировку.

1 голос
/ 09 марта 2011

Каков наилучший способ хранения этих данных?

Единственный вменяемый способ - это приложение App2 для отправки информации о кодировке данных.

Используя эту информацию, вы можете преобразовать ее в Unicode перед вставкой в ​​базу данных. Это было бы оптимальным.

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

...