Проблемы читая/пишущий данные UTF-8 в MySQL от Java с помощью коннектора JDBC 5.1

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

Предполагая, что ваш файл docker-compose.yml находится в корневом каталоге нужного вам места в / usr / src / app, вы можете изменить ваш docker-compose.yml следующим образом:

version: "3.3"
services:
  nodejs:
    build: ./nodejs-server
    ports:
      - "8001:8080"
    links:
      - db:db
    env_file:
      - ./.env-example
    volumes:
      - .:/usr/src/app
  db:
    build: ./mysql-server
    volumes:
      - ./mysql-server/data:/docker-entrypoint-initdb.d #A folder /mysql-server/data with a .sql file needs to exist
    env_file:
      - ./.env-example
15
задан Andrew Tobilko 11 January 2018 в 13:09
поделиться

2 ответа

В какой-то момент в цепочке байты в кодировке UTF-8 декодируются с помощью Latin1. Из списка ваших настроек кажется, что это происходит на сервере "character_set_server". Не зная, как были получены эти значения, их сложно интерпретировать.

Проверьте значение системного свойства "file.encoding". Если это не «UTF-8», то вам необходимо явно указать «UTF-8» в качестве кодировки символов всякий раз, когда вы декодируете байты в символы. Например, когда вы вызываете конструктор String с байтом [] или используете InputStreamReader .

Лучше всего явно указывать кодировки символов, вместо того, чтобы полагаться на кодировку платформы по умолчанию.

5
ответ дан 1 December 2019 в 00:30
поделиться

Вы можете установить для свойства file.encoding вашей JVM значение UTF-8, поэтому все локали чувствительный API / encoding будет рассматривать декодированные строки как UTF8.

Например, вы можете установить его в командной строке, которая запускает ваше приложение Java:

java -Dfile.encoding=UTF-8 ....

Вы также можете обратиться к этому вопросу SO для Полное объяснение настройки Tomcat.

5
ответ дан 1 December 2019 в 00:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: