MySQL Java и C программа, разница в символах сохраняется

0

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

Определенное имя файла содержит длинный символ "-" . Это имя_файла считывается из базы данных программой java. Но когда он пытается открыть файл для файловой системы для этой записи, имена файлов не будут совпадать.

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

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

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

Спасибо,
-Keshav

Теги:
character-encoding

1 ответ

2
Лучший ответ

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

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

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

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

  • 1
    Решил проблему, применив кодировку подключения к UTF8 для всех входящих клиентских подключений к серверу Mysql.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню