精华内容
下载资源
问答
  • 快速把eclipse中Java文件由UTF-8转GBK,且不乱码 java文件开始是utf-8的,但是需要转为GBK。如果直接转,那么里面的文字都是乱码,如下图 那么要如何做呢? 首先,把整个项目右键–》properties,改为GBK 第二,...

    快速把eclipse中Java文件由UTF-8转成GBK,且不乱码

    java文件开始是utf-8的,但是需要转为GBK。如果直接转,那么里面的文字都是乱码,如下图
    图片: https://uploader.shimo.im/f/94ET4DK68pU9DjxC.png

    那么要如何做呢?
    首先,把整个项目右键–》properties,改为GBK
    图片: https://uploader.shimo.im/f/WFn4SvUJPbDsA77X.png

    第二,此时java文件都是乱码,文件格式已经是GBK
    在这里插入图片描述

    第三,把文件改回为utf-8格式
    在这里插入图片描述

    变成
    在这里插入图片描述

    第四,此时再把文件改为gbk,又乱码了,别急。
    在这里插入图片描述

    第五,按ctrl+z回退键,变成中文了。此时再点击保存,就是保存的中文的GBK文件
    在这里插入图片描述

    展开全文
  • 最好能通过转化的方式将系统B接收到的乱码转回为正常的GBK格式,有这样的方法吗? ps:系统A通过http请求到系统B,系统B通过request 获取到系统A传过来的报文。 系统B是个java web工程,接收报文的serverlet使用了...
  • 项目中tomcat设置为utf8解码,当对外的url接口(如ReceiveAction)接收到gbk编码请求时候会自动被tomcat解码为utf8,此时中文直接request.getParameter("content")出来就是乱码,无法直接转换回gbk,怎么转换都是乱码...

    项目中tomcat设置为utf8解码,当对外的url接口(如ReceiveAction)接收到gbk编码请求时候会自动被tomcat解码为utf8,

    此时中文直接request.getParameter("content")出来就是乱码,无法直接转换回gbk,怎么转换都是乱码。

    解决方法:通过requset.getQueryString() 来获取到 %D6%D0%B9%FA 再urldecode 下就得到了 正确的中文了

    此类,就是基于通过自己解析http的queryString和postdata来处理乱码问题的

    import java.io.IOException;

    import java.util.ArrayList;

    import java.util.Enumeration;

    import java.util.Hashtable;

    import java.util.StringTokenizer;

    import javax.servlet.http.HttpServletRequest;

    /**

    * 项目中tomcat设置为utf8解码,当对外的url接口(如ReceiveAction)接收到gbk编码请求时候会自动被tomcat解码为utf8,

    * 此时中文直接request.getParameter("content")出来就是乱码,无法直接转换回gbk,怎么转换都是乱码。

    *

    * 解决方法:通过requset.getQueryString() 来获取到 %D6%D0%B9%FA 再urldecode 下就得到了 正确的中文了

    * 此类,就是基于通过自己解析http的queryString和postdata来处理乱码问题的

    *

    */

    public class HttpRequestReader {

    Hashtable pairs = new Hashtable();

    /**

    * RawParameterReader constructor comment.

    */

    public HttpRequestReader(HttpServletRequest request, String encoding)

    throws IOException {

    super();

    parse(request.getQueryString(), encoding);

    parse(request.getReader().readLine(), encoding);

    }

    public static String decode(String s, String encoding) throws Exception {

    StringBuffer sb = new StringBuffer();

    for (int i = 0; i < s.length(); i++) {

    char c = s.charAt(i);

    switch (c) {

    case '+':

    sb.append(' ');

    break;

    case '%':

    try {

    sb.append((char) Integer.parseInt(

    s.substring(i + 1, i + 3), 16));

    } catch (NumberFormatException e) {

    throw new IllegalArgumentException();

    }

    i += 2;

    break;

    default:

    sb.append(c);

    break;

    }

    }

    // Undo conversion to external encoding

    String result = sb.toString();

    byte[] inputBytes = result.getBytes("8859_1");

    return new String(inputBytes, encoding);

    }

    /**

    * Insert the method's description here. Creation date: (2001-2-4 17:30:59)

    *

    * @return java.lang.String

    * @param name

    *            java.lang.String

    */

    public String getParameter(String name) {

    if (pairs == null || !pairs.containsKey(name))

    return null;

    return (String) (((ArrayList) pairs.get(name)).get(0));

    }

    /**

    * Insert the method's description here. Creation date: (2001-2-4 17:28:17)

    *

    * @return java.util.Enumeration

    */

    public Enumeration getParameterNames() {

    if (pairs == null)

    return null;

    return pairs.keys();

    }

    /**

    * Insert the method's description here. Creation date: (2001-2-4 17:33:40)

    *

    * @return java.lang.String[]

    * @param name

    *            java.lang.String

    */

    public String[] getParameterValues(String name) {

    if (pairs == null || !pairs.containsKey(name))

    return null;

    ArrayList al = (ArrayList) pairs.get(name);

    String[] values = new String[al.size()];

    for (int i = 0; i < values.length; i++)

    values= (String) al.get(i);

    return values;

    }

    /**

    * Insert the method's description here. Creation date: (2001-2-4 20:34:37)

    *

    * @param urlenc

    *            java.lang.String

    */

    private void parse(String urlenc, String encoding)

    throws java.io.IOException {

    if (urlenc == null)

    return;

    StringTokenizer tok = new StringTokenizer(urlenc, "&");

    try {

    while (tok.hasMoreTokens()) {

    String aPair = tok.nextToken();

    int pos = aPair.indexOf("=");

    String name = null;

    String value = null;

    if (pos != -1) {

    name = decode(aPair.substring(0, pos), encoding);

    value = decode(aPair.substring(pos + 1), encoding);

    } else {

    name = aPair;

    value = "";

    }

    if (pairs.containsKey(name)) {

    ArrayList values = (ArrayList) pairs.get(name);

    values.add(value);

    } else {

    ArrayList values = new ArrayList();

    values.add(value);

    pairs.put(name, values);

    }

    }

    } catch (Exception e) {

    throw new java.io.IOException(e.getMessage());

    }

    }

    }

    然后action或jsp中使用如下代码获取到的就是正常的中文了

    HttpRequestReader paramReader = new HttpRequestReader(request, "gbk");

    String name = paramReader.getParameter("name");

    System.out.println(name);

    参见:http://bbs.csdn.net/topics/390360298?page=1#post-393608658

    展开全文
  • tomcat为utf8编码,解析gbk编码的URL请求,中文乱码处理 项目中tomcat设置为utf8解码,当对外的url接口(如ReceiveAction)接收到gbk编码请求时候会自动被tomcat解码为utf8, 此时中文直接request.getParameter(...
    tomcat为utf8编码,解析gbk编码的URL请求,中文乱码处理
    项目中tomcat设置为utf8解码,当对外的url接口(如ReceiveAction)接收到gbk编码请求时候会自动被tomcat解码为utf8,
    此时中文直接request.getParameter("content")出来就是乱码,无法直接转换回gbk,怎么转换都是乱码。 

    解决方法:通过requset.getQueryString() 来获取到 %D6%D0%B9%FA 再urldecode 下就得到了 正确的中文了

    例:
    URL:http://127.0.0.1:8080/ValueAddPlane/clc/notify?orderstate=2&portorderid=2015101510449194&tickets=%c6%eb%c4%cb%ca%a2%2c7848501352120
    参数中tickets为“齐乃盛,2c7848501352120


    controller中处理
        String reqStr = request.getQueryString();    //得到的字符串是 “orderstate=2&portorderid=2015101510449194&tickets=齐乃盛,2c7848501352120“
        String decodeReqStr = URLDecoder.decode(reqStr, "GBK");
        String[] reqArry = decodeReqStr.split("&");
        Map<String, String> reqMap = new HashMap<String, String>();
        for (String reqItem : reqArry) {
            String[] reqItemArray = reqItem.split("=");
            reqMap.put(reqItemArray[0], reqItemArray[1]);
       }
    展开全文
  • [color=red] 项目中tomcat设置为utf8解码,当对外的url接口(如ReceiveAction)接收到gbk编码请求时候会自动被tomcat解码为utf8, 此时中文直接request.getParameter("content")出来就是乱码,无法直接...
    [color=red] 项目中tomcat设置为utf8解码,当对外的url接口(如ReceiveAction)接收到gbk编码请求时候会自动被tomcat解码为utf8,
    此时中文直接request.getParameter("content")出来就是乱码,无法直接转换回gbk,怎么转换都是乱码。

    解决方法:通过requset.getQueryString() 来获取到 %D6%D0%B9%FA 再urldecode 下就得到了 正确的中文了
    此类,就是基于通过自己解析http的queryString和postdata来处理乱码问题的
    [/color]

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Enumeration;
    import java.util.Hashtable;
    import java.util.StringTokenizer;

    import javax.servlet.http.HttpServletRequest;

    /**
    * 项目中tomcat设置为utf8解码,当对外的url接口(如ReceiveAction)接收到gbk编码请求时候会自动被tomcat解码为utf8,
    * 此时中文直接request.getParameter("content")出来就是乱码,无法直接转换回gbk,怎么转换都是乱码。
    *
    * 解决方法:通过requset.getQueryString() 来获取到 %D6%D0%B9%FA 再urldecode 下就得到了 正确的中文了
    * 此类,就是基于通过自己解析http的queryString和postdata来处理乱码问题的
    *
    */
    public class HttpRequestReader {

    Hashtable pairs = new Hashtable();

    /**
    * RawParameterReader constructor comment.
    */
    public HttpRequestReader(HttpServletRequest request, String encoding)
    throws IOException {
    super();
    parse(request.getQueryString(), encoding);
    parse(request.getReader().readLine(), encoding);
    }

    public static String decode(String s, String encoding) throws Exception {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    switch (c) {
    case '+':
    sb.append(' ');
    break;
    case '%':
    try {
    sb.append((char) Integer.parseInt(
    s.substring(i + 1, i + 3), 16));
    } catch (NumberFormatException e) {
    throw new IllegalArgumentException();
    }
    i += 2;
    break;
    default:
    sb.append(c);
    break;
    }
    }
    // Undo conversion to external encoding
    String result = sb.toString();
    byte[] inputBytes = result.getBytes("8859_1");
    return new String(inputBytes, encoding);
    }

    /**
    * Insert the method's description here. Creation date: (2001-2-4 17:30:59)
    *
    * @return java.lang.String
    * @param name
    * java.lang.String
    */
    public String getParameter(String name) {
    if (pairs == null || !pairs.containsKey(name))
    return null;
    return (String) (((ArrayList) pairs.get(name)).get(0));
    }

    /**
    * Insert the method's description here. Creation date: (2001-2-4 17:28:17)
    *
    * @return java.util.Enumeration
    */
    public Enumeration getParameterNames() {
    if (pairs == null)
    return null;
    return pairs.keys();
    }

    /**
    * Insert the method's description here. Creation date: (2001-2-4 17:33:40)
    *
    * @return java.lang.String[]
    * @param name
    * java.lang.String
    */
    public String[] getParameterValues(String name) {
    if (pairs == null || !pairs.containsKey(name))
    return null;
    ArrayList al = (ArrayList) pairs.get(name);
    String[] values = new String[al.size()];
    for (int i = 0; i < values.length; i++)
    values[i] = (String) al.get(i);
    return values;
    }

    /**
    * Insert the method's description here. Creation date: (2001-2-4 20:34:37)
    *
    * @param urlenc
    * java.lang.String
    */
    private void parse(String urlenc, String encoding)
    throws java.io.IOException {
    if (urlenc == null)
    return;
    StringTokenizer tok = new StringTokenizer(urlenc, "&");
    try {
    while (tok.hasMoreTokens()) {
    String aPair = tok.nextToken();
    int pos = aPair.indexOf("=");
    String name = null;
    String value = null;
    if (pos != -1) {
    name = decode(aPair.substring(0, pos), encoding);
    value = decode(aPair.substring(pos + 1), encoding);
    } else {
    name = aPair;
    value = "";
    }
    if (pairs.containsKey(name)) {
    ArrayList values = (ArrayList) pairs.get(name);
    values.add(value);
    } else {
    ArrayList values = new ArrayList();
    values.add(value);
    pairs.put(name, values);
    }
    }
    } catch (Exception e) {
    throw new java.io.IOException(e.getMessage());
    }
    }
    }



    [color=red]然后action或jsp中使用如下代码获取到的就是正常的中文了[/color]



    HttpRequestReader paramReader = new HttpRequestReader(request, "gbk");
    String name = paramReader.getParameter("name");
    System.out.println(name);


    参见:[url]http://bbs.csdn.net/topics/390360298?page=1#post-393608658[/url]
    展开全文
  • 1、如题。...2、在nodepad中先用ansi编码编写中文,然后转成UTF-8乱码,但转回ansi又能正常显示。这和java先用错误编码读取,在用正确编码写文件的差别在哪呢。 有点迷惑,希望大神解答,谢谢!
  • 根据乱码猜出编码 String source = "中文... Charset utf8Charset = Charset.forName("utf-8"); Charset iso88591Charset = Charset.forName("iso-8859-1"); Charset defaultCharset = Charset.defaultCharset();
  • 解决vscode的终端中文乱码的方法

    千次阅读 2020-07-23 21:04:49
    0.我们首先需要明白为什么vscode这个终端为什么会有中文乱码 因为,你在使用vscode时,比如你新建了一个文件,你会发现右下角的编码方式默认...转回之前的话题,由于vscode的编码和终端的编码它是不一样的,所以他自然
  • 在原文件file类中找到move方法 ...返回文件名的时候 需要把gbk的编码转回utf8,不然可能会报错。 参考链接http://www.thinkphp.cn/topic/51891.html http://www.thinkphp.cn/topic/13461.html 转载于:h...
  • 一、问题描述 当Eclipse使用GBK编码,而Intellij IDEA...2、选择重新加载(如果选择Convert会转换失败,可能出现永久乱码,无法转回的情况) 3、中文注释显示成功 4、在右下角点击GBK 5、选择转换成UTF-8 ...
  • 但是用python读取ANSI格式的时候不太爽,需要把encoding设置为’gbk’挺麻烦,所以还是希望读取的csv文件为utf-8,这样Pandas.read_csv()就不用了再指定encoding编码方式了。 所以这里有一种两全的方法:先通过...
  • 原因: 批处理文件,是以ANSI编码方式。若以别的方式(如UTF-8)编辑了批处理,转换成ANSI格式即可,正常创建的文件的格式都是utf-8的。 解决: 1.使用windows自带的记事本编辑...chcp 936 可以换默认的GBK chcp 4
  • 一、问题描述 当Eclipse使用GBK编码,而Intellij IDEA使用UTF-8...2、选择重新加载(如果选择Convert会转换失败,可能出现永久乱码,无法转回的情况) 3、中文注释显示成功 4、在右下角点击GBK 5、选择转换成U
  • 比较繁琐的方法是在windows下用程序把内容转换为utf-8编码格式的,但是相当麻烦,而且遇到一个文件。下面介绍一下,在Linux中如何一劳永逸的解决这个问题,查看文件的编码及如何进行对文件进行编码转换。
  • ajax乱码解决汇总

    2013-01-07 10:49:37
    用AJAX 来GET一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把 resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字...
  • 一般来说简体中文版Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8,所以我们国人经常遇到文件乱码,这时需要知道如何进行编码转换。一:本机环境linux系统的系统语言设置为:[root@localhost test...
  • url如携带中文字符常见存在gbk和urf-8两种格式,这段时间做数据分析时经常乱码,今天想起由于utf-8的格式是3个字符的,所以考虑把中文字符解码成utf-8,然后再转回utf-8,如果和原先字符串匹配,则可以认为是utf-8的...
  • 比较繁琐的方法是在windows下用程序把内容转换为utf-8编码格式的,但是相当麻烦,而且遇到一个文件。下面介绍一下,在Linux中如何一劳永逸的解决这个问题,查看文件的编码及如何进行对文件进行编码转换。
  • 比较繁琐的方法是在windows下用程序把内容转换为utf-8编码格式的,但是相当麻烦,而且遇到一个文件。下面介绍一下,在Linux中如何一劳永逸的解决这个问题,查看文件的编码及如何进行对文件进行编码转换。...
  • 问题描述:我们项目开发都统一采用utf-8格式编码,但昨天研发部的一个产品要集成进来,他们是用gbk编码的,如果强行将文件设置成utf-8肯定不行,中文全乱了。在jsp里面用 ctrl+H 进行搜索替换也不行,中文也是显示不...
  • 在中国的电脑会要求兼容gbk编码,所以微软进入中国市场也顺应中国的要求,其中最明显的就是在cmd上默认的显示就是GBK 。当开发人员在运行一些有打印中文的程序时,...chcp 936可以将cmd显示编码转回GBK 转载于:...
  • convmv安装包

    2020-12-13 21:30:24
    比较繁琐的方法是在windows下用程序把内容转换为utf-8编码格式的,但是相当麻烦,而且遇到一个文件。下面介绍一下,在Linux中如何一劳永逸的解决这个问题,查看文件的编码及如何进行对文件进行编码转换。 如何...
  • if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是UTF-8 String s2 = encode; return s2; } } catch (Exception exception2) { } encode = "GBK"; try { if (str.equals...
  • 取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。 -------------------------------------------------------------------------------- 易语言5.0 相对于易语言4.x更新说明(2010/02/01):  增加...
  • 实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

utf8转gbk乱码转回中文