servlet乱码

本来是"UTF-8"编码,是没有乱码的,
但是我写程序老是容易会中英字符混淆,就是因为输入法切换导致中文符号混入,于是我windows更新成
non-Unicode程序默认用英文。

然后之前写的中文字符串全都变乱码了,但是网页是正常的。

现在写的中文字符串代码里不是乱码,但是网页里是乱码,请问我该怎么办?

谢谢。

阅读 2k
1 个回答

乱码问题的出现可能各种原因, 每种解决办法都不太一样, 建议你根据情况网上搜一下相应的解决办法.

基本原则是向 UTF-8 靠拢

统一编码, 尽量不做/少做编码转换, 减少不兼容问题

以下的办法仅是提供线索, 你要自己详细了解每一个方案的细节.

大体上分这几种:

操作系统乱码

Linux 下更常见, 办法是把 local, language 等系统变量统一成 zh_CN.UTF-8

数据库乱码

解决方案是对数据库, 表, 表文本字段指定字符集, 如 utf-8, 需要支持 emoji的要用utf8mb4, jdbc连接字符串也要指定使用 utf-8

Tomcat 乱码

解决办法: 1. server.xml 设URIEncoding, 2. 使用 Filter 对全部请求过虑转换, spring 里有专门Filter, 几乎每个项目的标配.

Jsp 文件乱码

解决办法

<%@ page contentType="text/html; charset= UTF-8"%>

HTML 乱码

<meta charset="UTF-8">

Java 源码乱码

Eclipse 下

选择乱码的java文件右键选择properties,进入该文件的设置页面,选择resources属性,在页面下方可以看到Text file encoding项;

其他 IDE 也可以设置统一偏好, 但还是那句话, 向 UTF-8 靠拢.

文体文件乱码

有两个转码工具: native2ascii, iconv 可以批量对源文件进行转码.

String 乱码

可以 target = new String(src.getBytes('原始编码'), '目标编码') 的方式转换

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题