utf-8如何转成gbk的编码

lin_song8582 2007-11-15 10:24:25
我的代码是这样的:
mobilemessage = new String((servletRequest.getParameter(
"mobilemessage")).getBytes("iso-8859-1"), "UTF-8");
我首先把iso8859-1转成utf-8,我现在需要再把这个utf-8转成GBK,请问该怎么转啊??
我用了几个方法,都行不通。以下是我用的几个方法:

1。mobilemessage =(String)servletRequest.getParameter("mobilemessage");
mobilemessage= new String(URLDecoder.decode(mobilemessage, "utf-8").getBytes("utf-8"),"GBK");
2。mobilemessage=URLDecoder.decode(URLEncoder.encode(mobilemessage,"GBK"),"GBK");
3。mobilemessage = new String(mobilemessage.getBytes("iso-8859-1"),"gbk")

请各位帮忙看看。
...全文
2376 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
bazhu 2007-11-24
  • 打赏
  • 举报
回复
nanjg在8楼的帖子小改可能可以:
byte [] b;
String utf8_value;
utf8_value = request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据
b = utf8_value.getBytes("8859_1"); //中间用ISO-8859-1过渡
String name = new String(b, "utf-8"); //其实最终显示的就是无乱码的汉字了,前提是前面传递的参数的时候是utf-8进行
nanjg 2007-11-17
  • 打赏
  • 举报
回复
那就把这个类 固定于一个单独的文件夹下
nanjg 2007-11-16
  • 打赏
  • 举报
回复
我还有个法 就是设置过滤器 request response 针对这2个去设置 编码
import   java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SetCharacterEncodingFilter implements Filter {

/*
* (非 Javadoc)
*
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {

this.encoding = null;
this.filterConfig = null;

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 选择使用的字符编码
if (ignore ¦ ¦ (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null) {
request.setCharacterEncoding(encoding);

}
// 将控制权交给下一个Filter
chain.doFilter(request, response);
}

}


// 将这个filter放置在服务中
/*
* (非 Javadoc)
*
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter( "encoding ");
String value = filterConfig.getInitParameter( "ignore ");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase( "true "))
this.ignore = true;
else if (value.equalsIgnoreCase( "yes "))
this.ignore = true;
else
this.ignore = false;

}

protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}

protected String encoding = null;

protected FilterConfig filterConfig = null;

protected boolean ignore = true;

}

在web.xml文件中加入以下代码
<filter>
<filter-name> SetCharacterEncodingFilter </filter-name>
<filter-class> SetCharacterEncodingFilter </filter-class>
<init-param>
<param_name> encoding </param_name>
<param-value> GBK </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> SetCharacterEncodingFilter </filter-name>
<url_pattern> /* </url_pattern>
</filter-mapping>
lin_song8582 2007-11-16
  • 打赏
  • 举报
回复
我刚才的网络也不好。
mobilemessage= new String(servletRequest.getParameter( "mobilemessage ").getBytes( "iso-8859-1 "), "gbk");
这个我也试过了,不行,愁死我了,这个问题折腾我好几天了~~
lin_song8582 2007-11-16
  • 打赏
  • 举报
回复
我刚才的网络也不好。
mobilemessage= new String(servletRequest.getParameter( "mobilemessage ").getBytes( "iso-8859-1 "), "gbk");
这个我也试过了,不行,愁死我了,这个问题折腾我好几天了~~
nanjg 2007-11-16
  • 打赏
  • 举报
回复
我被吃帖子了 你把 iso-8859-1直接转gbk
nanjg 2007-11-16
  • 打赏
  • 举报
回复
我被吃帖子了 你把 iso-8859-1直接转gbk
lin_song8582 2007-11-16
  • 打赏
  • 举报
回复
引进了
nanjg 2007-11-16
  • 打赏
  • 举报
回复
我被吃帖子了 你把 iso-8859-1直接转gbk
lin_song8582 2007-11-16
  • 打赏
  • 举报
回复
引进了
nanjg 2007-11-16
  • 打赏
  • 举报
回复
你试试 把iso-8859-1 直接变成 gbk
nanjg 2007-11-16
  • 打赏
  • 举报
回复
引进jar了?
lin_song8582 2007-11-16
  • 打赏
  • 举报
回复
to nanjg:
我重新说一下我程序的过程。
1。获得mobilemessage的utf-8的编码。mobilemessage= new String(servletRequest.getParameter("mobilemessage").getBytes("iso-8859-1"),"utf-8");
2。因为我们需要调用第三方提供的api函数,他们的函数要求用gbk编码,所以我这个utf-8的编码必须要转成gbk编码,才能成功调用他们的函数。但是,我用上面这个方法还是不能成功调用他们的函数。
mobilemessage =org.apache.commons.io.IOUtils.toString(org.apache.commons.io.IOUtils.toInputStream(mobilemessage,"GBK")) ;
nanjg 2007-11-16
  • 打赏
  • 举报
回复
String gbkString = IOUtils.toString(IOUtils.toInputStream(utf8String, "GBK "))
utf8String 中字符,皆变为 UTF-8 编码。

写错了 sorry
String gbkString = IOUtils.toString(IOUtils.toInputStream(utf8String, "GBK "))
utf8String 中字符,皆变为 GBK 编码。
nanjg 2007-11-16
  • 打赏
  • 举报
回复
http://commons.apache.org/downloads/download_io.cgi 此处下载
网上大多是 汉字乱码的解决方法 不适合楼主
nanjg 2007-11-16
  • 打赏
  • 举报
回复
上面那个方法需要 commons-io-1.3.2.jar
nanjg 2007-11-16
  • 打赏
  • 举报
回复
String gbkString = IOUtils.toString(IOUtils.toInputStream(utf8String,"GBK"))
utf8String 中字符,皆变为 UTF-8 编码。
借助的借助 Apache Commons-IO 项目中提供的实用工具来编写代码。
com.apache.commons.io.IOUtils 中相关代码如下:
 /**
* Convert the specified string to an input stream, encoded as bytes
* using the specified character encoding.
*



* Character encoding names can be found at
* IANA.
*
* @param input the string to convert
* @param encoding the encoding to use, null means platform default
* @throws IOException if the encoding is invalid
* @return an input stream
* @since Commons IO 1.1
*/
public static InputStream toInputStream(String input, String encoding) throws IOException {
byte[] bytes = encoding != null ? input.getBytes(encoding) : input.getBytes();
return new ByteArrayInputStream(bytes);
}
lin_song8582 2007-11-16
  • 打赏
  • 举报
回复
不能针对一个类
nanjg 2007-11-16
  • 打赏
  • 举报
回复
发短信的方法单独写一个类中,去过滤这个类
我不知道 filter是否可以针对一个类的特定方法。。
nanjg 2007-11-16
  • 打赏
  • 举报
回复
filter 可以针对文件夹 过滤的!你把你们新的 针对第三方的 放置一处 去单独过滤呢?
加载更多回复(12)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧