缘由:
大凡做过几年开发的,尤其是与Web相关的,估计没有一个例外,都要碰到中文乱码问题。甚至连我们公司经验丰富的Website组都要在这个上面栽跟头。
最近要为CIS系统的UI增加些Tool功能,居然又碰到这个问题。
仔细检查,发现我已经遵守了防止中文乱码的铁律:前后端全部设置UTF-8格式。也就是说我的页面不论是php/html/jsp都已经设置UTF-8格式,服务端也设置了统一的格式UTF-8。
同时,按照我的测试印象,前两天本页面还没有发现这个问题,怎么今天就报错了呢?
经过一番google与测试,结果如下。
1. 前提遵守防止中文乱码的铁律:前后端全部设置UTF-8格式
2. Tomcat中,form提交需要用post,而get方法对中文依旧乱码
我测试时为了利用get方法的方便,居然忘记了改回去。
3. 别的Server如Jetty等,需要测试和参考文档,一些细节请仔细读下面思考
這個問題陸續遇到幾次了,始終知其然而不知其所以然。這是最近一次的處理案例:
環境
OS: CentOS 5.2 (utf-8)
Database: MySQL 5 (utf-8)
Application server: Tomcat 6
網頁
<input type=text name=keyword>
程式
String keyword=request.getParameter(“keyword”);
網頁的 input 輸入中文 submit 後由以上程式碼接取,原本的中文都變成亂碼。解決的方法是改用以下的接取程式碼,將收到的字串重新編碼。
String keyword=new String(request.getParameter(“keyword”).getBytes(“iso8859-1″),”utf-8″);
Why
Tomcat 在處理 GET、POST 參數時預設是採用 ISO-8859-1 編碼,請參考此 網址
URIEncoding 部份的說明,所以第2 段程式才會 work,請隨著您的作業系統及資料庫編碼設定,調整接取參數的程式碼。
Browser
以上的例子是送一個 keyword 到 tomcat web application 查詢資料,後來出現另一個問題,從 Firefox
送出中文的 keyword 可以正確的查到資料,Explorer 卻查不到,經過測試和查詢相關資料後發現,從 Explorer 送出
keyword 前要用 javascript encodeURIComponent()
編碼後再送出才會正常查到資料。
2008.11.27 加註
上面情形是發生在未指定 form 的 method,根據規格預設會以 get 傳送資料,Tomcat 的文件也沒有說明
URIEncoding 是會針對 get 或 post method 作處理。今天又遇到 form submit
中文亂碼問題,這次也不用重新編碼參數了,直接把 form method 設定 post,問題就解決了。看來 submit 的 form
有中文時,用 post method 會是比較好的選擇。
分享到:
相关推荐
### 解决Tomcat中文乱码问题 在使用Tomcat服务器部署Web应用时,经常会遇到中文乱码的问题。本文将详细探讨这一现象的原因,并提供一种有效的解决方案。 #### 问题背景 在Tomcat环境下运行Web应用程序时,如果...
tomcat get提交中文乱码解决方案,修改tomcat server.xml 中以下为
Docker 容器中 Tomcat 部署出现中文乱码解决方案 在 Docker 容器中部署 Tomcat 时,可能会遇到中文乱码的问题,这是由于 Docker 容器的 locale 设置导致的。在本文中,我们将介绍如何解决这个问题。 什么是 locale...
Tomcat和WebLogic中文乱码问题解决方案 在 Java Web 开发中,中文乱码问题一直是困扰开发者的主要问题之一。 Tomcat 和 WebLogic 是两个常用的 web 服务器,都是支持 Servlet 和 JSP 的。然而,在使用这些服务器时...
标题中的“关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论”涉及了两个关键的IT概念:Tomcat服务器的字符编码问题和Java虚拟机(JVM)内存管理的问题。让我们逐一深入探讨这两个主题。 首先,我们来...
针对这个问题,给出的解决方案是在Tomcat的启动脚本`bin/catalina.sh`中添加以下配置: ```bash JAVA_OPTS="-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8" ``` 这里的`JAVA_OPTS`环境变量用于设置Java虚拟机...
#### 解决方案:修改Tomcat配置 要解决这个问题,关键在于修改Tomcat的默认字符编码,使其能够正确识别并处理中文字符。修改的方式是在Tomcat的`Server.xml`配置文件中的`<Connector>`元素下添加或修改`URIEncoding...
本文将详细探讨几种常见的乱码场景及其解决方案。 #### 一、JSP页面上的中文显示为乱码 **问题描述**:在JSP页面中直接输入中文时,页面上显示的是乱码。 **原因分析**:JSP页面被编译成Java文件的过程中,默认...
### Linux部署系统JDK6与Tomcat6安装配置及Oracle11g中文显示乱码解决方案 #### 一、概述 本文将详细介绍如何在Linux环境下安装配置JDK6、Tomcat6以及解决Oracle11g数据库中文显示乱码的问题。整个过程涵盖了从...
有两种解决方案: 1. **修改Tomcat配置**:在`server.xml`文件的`Connector`标签中,设置`useBodyEncodingForURI="true"`,或者直接指定`URIEncoding`属性为具体的编码格式,如`URIEncoding="UTF-8"`。 2. **手动...
本文将深入探讨“JSP乱码”的多种解决方案,并提供实用的解决策略。 1. **理解字符编码的基本概念** - 字符编码是计算机对文字进行存储和处理的标准,常见的有ASCII、GBK、UTF-8等。 - JSP页面默认使用ISO-8859-1...
SpringBoot乱码问题解决方案 SpringBoot框架是一款流行的Java Web开发框架,但是在实际开发中,开发者经常会遇到乱码问题,导致项目无法正常运行。为了解决这个问题,本文将详细介绍SpringBoot乱码问题解决方案,并...
### Tomcat与Servlet乱码问题解析及解决方案 #### 一、引言 在Web开发过程中,经常遇到的一个问题就是字符编码的问题,特别是在处理中文字符时,如果编码设置不当,很容易出现乱码的情况。本文主要围绕Tomcat服务器...
Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 在 Linux 环境下,当使用 Xshell 查看 Tomcat 实时日志时,可能会出现中文乱码的问题。这篇文章将介绍解决这个问题的方法,包括配置 i18n 系统文件和...
### Tomcat 在IE中下载rar文件为乱码解决方案 #### 问题背景 在使用Tomcat作为Web服务器的应用程序中,可能会遇到一个常见的问题:当用户尝试通过Internet Explorer(IE)浏览器下载rar格式的文件时,文件会被误...
首先,需要确定中文乱码问题不是由浏览器引起的,然后讨论了 Tomcat 服务器配置和数据库 bean 配置中的一些解决方案。 一、浏览器配置问题 在讨论解决方案之前,需要确定中文乱码问题不是由浏览器引起的。在使用 ...
本方案将详细解析这一问题,并提供一系列解决方案。 首先,我们需要理解中文乱码出现的原因。当文件在编辑和保存时使用了一种编码(例如GBK),而文件被查看或处理时采用的是另一种编码(如ISO-8859-1)时,就会...
### 系统中文乱码解决方案 #### 一、引言 在软件开发过程中,中文乱码问题时常出现,尤其在数据库交互与前端展示时更为常见。本文将详细探讨解决中文乱码的方法,包括数据库编码设置、服务器配置、工程编码及程序...
以下是对该问题的深入解析及解决方案。 **问题描述:** 1. 当表单数据通过`REQUEST.getParameter("XXX")`获取时,返回的字符串可能出现乱码或显示为问号。 2. 使用URL直接提交的GET请求,如`...