Tomcat + MySQLdocker容器输出UTF8文本与错误的编码
在从mysql:5.6容器中检索到的tomcat:8.0容器的UTF8文本输出中遇到不正确的编码。
直接连接到MySQL容器并在shell上查询certificate文本正确存储在数据库中。
另外,模板中的UTF8内容是从tomcat容器的罚款输出。
JDBC连接器string读取: nfc.jdbc.mysql.url=jdbc:mysql://mysql:3306/mydatabase?autoReconnect=yes&useUnicode=yes&characterEncoding=UTF-8
这里是我正在使用的tomcat Dockerfile:
FROM tomcat:8.0 RUN apt-get update && \ apt-get -y install libmysql-java RUN echo 'CLASSPATH=/usr/share/java/mysql.jar' >> /usr/local/tomcat/bin/setenv.sh
和MySQL Dockerfile:
FROM mysql:5.6 RUN { \ echo '[mysqld]'; \ echo 'character-set-server = utf8'; \ echo 'collation-server = utf8_unicode_ci'; \ echo '[client]'; \ echo 'default-character-set=utf8'; \ echo '[mysql]'; \ echo 'default-character-set=utf8'; \ } > /etc/mysql/conf.d/charset.cnf VOLUME /var/lib/mysql
Tomcat运行命令是:
docker run \ --rm \ --name tomcat-server \ --volume $(pwd)/../../webapp:/usr/local/tomcat/webapps/mywebapp \ --volume $(pwd)/../../tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml:ro \ --link mysql-server:mysql \ --publish 8088:8080 \ --tty \ --interactive \ tomcat-server
我正在使用相同的MySQL镜像为其他docker容器Web服务器(python / django)提供内容,正在使用正确的编码方式提取和输出内容。
我对tomcat webapp的内容没有真正的理解,也不了解Java。
开发人员已经演示了从Windows服务器运行的应用程序生成正确的编码数据,但他们不了解Docker,所以我们正在旋转我们的车轮没有得到任何地方!