MySQL Java и C программа, разница в символах сохраняется - PullRequest
0 голосов
/ 02 ноября 2009

У меня есть две программы. Первая - это программа на C, которая записывает в базу данных mysql. Во-вторых, это Java-программа, которая считывает данные из базы данных MySQL. Программа на C читает список файлов в определенном каталоге и вставляет имена файлов в БД. Программа на Java читает эти строки и пытается выполнить некоторую обработку файлов, используя эти имена файлов.

Конкретное имя файла содержит длинную черту '-'. Это имя файла читается из БД с помощью Java-программы. Но когда он пытается открыть файл в файловой системе для этой записи, имена файлов не будут совпадать.

Когда я читаю имя файла (содержащее символ «-») непосредственно из файловой системы с использованием Java, байты для символа «-» отображаются как [-30 -128 -109]. Принимая во внимание, что байты, показанные, когда Java читает имя файла из БД (имя файла, выгружаемое программой C), байты для символа «-» отображаются как [-61 -94 -30 -126 -84 -30 -128 -100] в Java.

Это как-то связано с Charset, используемым программой C для ввода в mysql?

Пожалуйста, помогите ..

Спасибо
-Keshav

1 Ответ

2 голосов
/ 02 ноября 2009

Строки Java состоят из символов Unicode, а не байтов. Так что проблема может быть в том, что либо

  • В базу данных добавлена ​​строка в одной кодировке, но она думает, что это другая
  • Приложение Java неправильно интерпретирует вывод базы данных в символах
  • Кодировка файловой системы отличается от того, что думает приложение Java.

Как вы вводили строки в базу данных? Какое у вас определение таблицы? Какую кодировку соединения вы используете в клиентских приложениях?

Обычно для вашего здравого смысла лучше использовать utf8 для всего (определение таблицы и кодировка соединения). Если вы этого не сделаете, вы, вероятно, каким-то образом сломаете вещи.

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