java部署ubuntu后中文显示问号问题

1、首先先回忆自身项目的编码格式,即在本地进行编码时使用的编码格式。UTF-8

2、检测tomcat的设置问题,在web.xml和server中的设置:

server.xml中:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  URIEncoding="UTF-8"/>

web.xml中以下内容去掉注释:

<filter>
        <filter-name>setCharacterEncodingFilter</filter-name>
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <async-supported>true</async-supported>
    </filter>

3、检测ubuntu服务器中的编码格式

//检测本地语言环境:
locale
//进行配置的修改
vi /etc/profile

//添加下列行(LC_ALL表示全部设置,但不影响LANG):
export LANG="en_US.UTF-8"
export LC_ALL="zh_CN.UTF-8"
//设置后使其起效
source /etc/profile
//当出现 cannot 错误时 ,使用以下命令进行安装相应语言包
sudo locale-gen zn_CN.UTF-8
//当起效后,要再次进入配置中修改,将刚添加的两行删除,不然会影响jdk环境

4、mysql的配置

1.修改mysql默认配置:

默认的mysql配置:server、client都是latin1,对中文是不支持的,这里改为utf8

方法:

修改配置文件:

vim /etc/mysql/my.cnf

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

重启mysql

/etc/init.d/mysql restart

检查编码方式:

mysql> show variables like ‘char%‘;

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

2.修改项目使用的数据库的配置

修改此数据库的编码方式为utf8(默认是latin1)

mysql> alter database 数据库名 character set utf8;

查看此数据库的编码:

mysql> status

Connection id: 41

Current database: tslcrms

Current user: [email protected]

SSL: Not in use

Current pager: stdout

Using outfile: ‘‘

Using delimiter: ;

Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: utf8

Db characterset: utf8

Client characterset: utf8

Conn. characterset: utf8

UNIX socket: /var/run/mysqld/mysqld.sock

Uptime: 53 min 14 sec

mysql> show create database tslcrms;

+----------+------------------------------------------------------------------+

| Database | Create Database |

+----------+------------------------------------------------------------------+

| tslcrms | CREATE DATABASE 数据库名 /*!40100 DEFAULT CHARACTER SET utf8 */ |

+----------+------------------------------------------------------------------+

3.导入数据库文件中的表、字段的编码方式都修改成utf8

可以直接改.sql文件,改完导入。

也可以先导入,再用命令查看和更改。

附:在mysql中使用命令修改字符集:

mysql> SET character_set_client = utf8 ;

 mysql> SET character_set_connection = utf8 ;
 mysql> SET character_set_database = utf8 ;
 mysql> SET character_set_results = utf8 ;
 mysql> SET character_set_server = utf8 ;
 mysql> SET collation_connection = utf8 ;
 mysql> SET collation_database = utf8 ;
 mysql> SET collation_server = utf8 ;

SET NAMES ‘utf8‘;

相当于下面的三句指令:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

5、另外

mysql默认的字符集为latin1的,所以要改为utf8的。很多网上的文章执行“sudo vi /etc/mysql/my.cnf”,可是打开一看,里面就两行话:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

想来mysql的配置文件应该是在那两个文件夹下面,于是尝试之下打开了/etc/mysql/mysql.conf.d/ 下的mysqld.cnf文件,执行下面的命令:

~$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

[client]

default-character-set=utf8

[mysqld_safe]

socket = /var/run/mysqld/mysqld.sock

nice = 0

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

后重启Mysql服务器

~$ sudo /etc/init.d/mysql restart

~$ mysql -u root -p

mysql> show variables like "%char%"

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

欢迎加入学习交流群569772982,大家一起学习交流。

原文地址:https://www.cnblogs.com/z335/p/8228158.html

时间: 2024-11-01 00:54:58

java部署ubuntu后中文显示问号问题的相关文章

Ubuntu下中文显示乱码

转自:http://jingyan.baidu.com/article/915fc414c9d2ef51384b204c.html 装好了Ubuntu 13.10 后,打开部分Windows下的txt文本文件的时候,中文显示为乱码.但是自己用Gedit编写新文件的时候,输入的中文却可以正常显示,保存后再退出也可以正常显示.而且对于Windows下的文本文件,也不是全部含有中文的都显示为乱码. 整理下思路,如果真的是中文无法正常显示的问题,也就是字体设置问题,是不应该有文件能够正常显示中文的,应该

添加至数据库的中文显示问号

从前端获取的中文显示正常,并在后面处理过程中没有出现乱码,但保存至数据库后显示的全是问号. 排除数据库存储字段均显示为UTF8后,解决办法是将配置文件的字段修改如下: #Generated by wang fei database.driverClassName=com.mysql.jdbc.Driver database.url=jdbc\:mysql\://106.2.108.65\:3306/example?characterEncoding=utf-8 database.username

工控随笔_03_西门子_Step7项目打开后CPU显示问号解决方法

我们在利用西门子的S7-300/400 PLC的编程软件Step7的时候会出现下面如图所示的问题. 在打开项目的时候,我们会在Simatic Manager里面看到CPU以及一些其他一些组件显示问号. 图.CPU显示问号 一.问题产生的原因 这个问题产生的原因是我们利用低版本的Step7 打开项目的时候,由于Step7 里面没有最新的 硬件的描述性文件导致的. (说明: 西门子的硬件说明文件时.xml格式的文件). 二.解决方法 解决方法有三个: 升级Step7 .重装系统.升级硬件描述性文件.

mysql中文显示问号,不能识别中文的解决方案

今天写后台程序,发现从前端插入的中文,到后台mysql中查看是问号. 并不能显示出中文,初步判定是编码的问题. 我们利用 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff } span.s1 { } show variables like'character_set_%'; 与 p.p1 { margin: 0.0px 0.0px 0.0px

Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Query OK, 1 row affected, 1 warning (0.00 sec)    表明出现错误,没有插入成功,然后执行select * from 表名   就会出现如下的问题:显示的表中出现乱码或者问号. 如图: 解决方案: 首先重新打开一个终端窗口(方便操作),进入root用户模式 执行

VMware部署ubuntu后开机提示piix4_smbus: Host SMBus controller not enabled!

在虚拟机部署ubuntu10.04-server,每次启动完成之后,出现"piix4_smbus0000:00:07.3: Host SMBus controller not enabled!"提示信息 经网上搜索,是ubuntu装入i2c_piix4模块所致,处理方法: 1.查明装入模块的确切名字:lsmod | grep i2c # lsmod | grep i2c_piix4 i2c_piix4              12574  0 2.将该模块列入不装入名单.编辑文件/e

英文版ubuntu默认中文显示很奇怪 解决方案

先说明一下,蟹蟹用的环境是Ubuntu 18.04 LTS. 最近在写作的时候,发现中文字体极其的丑,我也不知道为什么,尤其是显示包.过.达这三个字的时候会显得特别奇怪. 网上查,无果,所以今天蟹蟹来写一下我的心路历程给后人照明(大雾 首先我们需要知道关于这个中文字体在ubuntu下的位置,它在 /etc/fonts/conf.avail/64-language-selector-prefer.conf 打开之后应该是这样的: <?xml version="1.0"?> &

win8.1中xshell输入中文显示问号问题

自我实践了,真的有效果,特此推荐,老规矩,原文地址. 尝试使用win8.1但发现使用xshell连接虚拟机后,无法输入中文了,真是毛病,只能想办法解决了. 控制面板--语言   删除除中文输入法之外的所有输入法和美式键盘 然后就可以正常输入中文了,为了英文方便,再把美式键盘添加回来 其实最终感觉,就是win8.1把美式键盘默认放在中文语言中,导致的输入问题,所以把美式键盘单独放到英语语言中,问题就解决了.

Centos7下修改mysql5.6编码方式 解决网站中文显示问号

解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码. 具体操作: 1.进入MySQL控制台 mysql  -u root -p 输入密码 查看当前mysql运行状态 mysql>status 后面四个编码是我在修改之后,所以显示utf-8:默认编码是latin1. 2.修改mysql配置文件 默认位置:/etc/my.cnf 进入etc文件夹>>vim my.cnf 图片是我添加设置后的. * 我的mysql没有[client]这