JSF中文乱码问题

humanity 发表于 2005-9-27 0:37:02

<body onload="document.charset='UTF-8';" >


DK_Sun 发表于 2005-9-27 0:39:19

给你一个类;
public class GBKConvert {
public GBKConvert() {
}
public static String isoToGbk(String inStr) {
// 将字符串的内码从ISO8859-1转换到GBK

String outStr = inStr;
try {
if (inStr == null) {
return "";
}
else {
outStr = "";
try {
outStr = new String(inStr.getBytes("ISO8859-1"), "GBK");
}
catch (Exception ex) {
ex.printStackTrace();
}

}
}
catch (Exception ex) {
ex.printStackTrace();
}
return outStr;
}

}
转换时调用它就行了。
feihuchina 发表于 2005-9-27 9:39:48

你写的数据库中后是否是乱码,若是乱码的话,就说明你往数据库存数据是就发生乱码,这就需要你在写库前对字符串进行转码;

如果写到数据库中的字符串是正确的,哪就说明在输出时需转码;

还有一种情况就是你在你的jsp中加入如下行<%@ page contentType="text/html;charset=GBK" %>

转码方法如下;

/**
* 字符串内码转换 iso8859-1 to GB2312
* @param ori 源字符串
* @return 转换后的字符串
*/
public static String isotogb(String ori) {
String newstr = "";
try {
if (ori == null) {
ori = "";
}
byte[] byte1 = null;
byte1 = ori.getBytes("ISO-8859-1");
newstr = new String(byte1, "EUC_CN");
return newstr;
}
catch (Exception e) {
e.printStackTrace();
return newstr;
}
}

/**
* 字符串内码转换 GB2312 to iso8859-1
* @param ori 源字符串
* @return 转换后的字符串
*/
public static String gbtoiso(String ori) {
String newstr = "";
try {
if (ori == null) {
ori = "";
}
byte[] byte1 = null;
byte1 = ori.getBytes("EUC_CN");
newstr = new String(byte1, "ISO-8859-1");
return newstr;
}
catch (Exception e) {
e.printStackTrace();
return newstr;
}
}

mazq024 发表于 2005-9-27 9:54:38

数据在写入数据库前就是乱码,页面的其他地方中文可以正常显示
srx 发表于 2005-9-27 19:48:57

输入页面,输出页面需要同一种字符集。

mazq024 发表于 2005-9-29 8:19:22

问题我自己解决了,
解决方法如下:
该方法已知适用的版本tomact5.0.18,tomcat5.0.9。
已知不适用的版本为tomcat5.0.28。
问题描述:
在inputtext中输入中文,然后在输出,显示为乱码。
解决方法:
1、自定义转器
package util;
import java.util.Map;
import javax.faces.component.UIComponent;
import javax.faces.convert.Converter;
import javax.faces.context.FacesContext;
import javax.faces.convert.ConverterException;

public class StringConverter implements Converter {
public Object getAsObject(FacesContext context, UIComponent component,
String newValues) throws ConverterException {
String newstr = "";
if (newValues == null) {
newValues = "";
}
byte[] byte1 = null;
try {
byte1 = newValues.getBytes("ISO-8859-1");
newstr = new String(byte1, "GB2312");
UIInput input=(UIInput)component;//
input.setSubmittedValue(newstr);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

return newstr;

}

public String getAsString(FacesContext context, UIComponent component,
Object Values) throws ConverterException {
return (String) Values;
}
}

2、注册转换器
faces-config.xml片段
<converter>
<converter-id>util.stringconverter</converter-id>
<converter-class>util.StringConverter</converter-class>
</converter>

3、在页面使用转换器
<h:inputText id="account" value="#{user.account}" required="true" styleClass="input"><f:converter converterId="util.stringconverter"/>
</h:inputText>
canghaisha 发表于 2005-9-30 14:42:21

页面用“UTF-8”
然后使用filters
layueer 发表于 2005-9-30 14:57:46

//====================================字符串处理函数==========================
/**
* 功能或作用:转换字符串的字符集为中文
* @param InputStr:输入字符串
* @return 中文字符集的字符串
*/
public String toChinese(String InputStr)
{
if(InputStr==null)
return null;
try
{
String convert=new String(InputStr.getBytes("ISO8859-1"),"gb2312");
return convert;
}
catch(Exception e){}
return null;
}
chenyingchun 发表于 2005-12-21 0:01:27

设置Application server的 vm参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值