2 qq 34696943 qq_34696943 于 2017.01.02 20:20 提问

同样的汉字,在服务器和本地的电脑上URLencode 出来的结果不一致 10C

Java 代码 同样的汉字,但是我在服务器和自己的电脑上encode了一下发现结果不一致,这是由于什么原因造成的呢?

9个回答

LD0807
LD0807   2017.01.02 20:22

你本地应该是windows,默认是GBK。服务器应该是linux,默认是UTF-8。

testcs_dn
testcs_dn   Rxr 2017.01.02 20:28

字符串的编码问题;

         String oldStr = new String("中文字符");  //我的环境默认UTF-8
        System.out.println(URLEncoder.encode(oldStr));
        try {
            String newStr = new String(oldStr.getBytes(), "gb2312");
            System.out.println(URLEncoder.encode(newStr));
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  

输出:
%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6
%E6%B6%93%EF%BF%BD%EF%BF%BD%EF%BF%BD%E7%80%9B%EF%BF%BD%E7%BB%97%EF%BF%BD

testcs_dn
testcs_dn   Rxr 2017.01.02 20:35

UTF-8的才是正确的。

        String oldStr = new String("中文字符");
        try {
            System.out.println(URLEncoder.encode(oldStr, "utf-8"));
            System.out.println(URLEncoder.encode(oldStr, "gb2312"));
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

testcs_dn
testcs_dn   Rxr 2017.01.02 21:49
gxl_1314520
gxl_1314520   2017.01.02 22:21

这里以IE10浏览器为例,浏览器按照UTF-8编码后,Tomcat的字符集为ISO8859-1将浏览编码之后的结果进行解码,因为解码之后不支持中文,所以会出现??

JE_GE
JE_GE   2017.01.02 22:41

服务器和本地jdk版本不一致

caozhy
caozhy   Ds   Rxr 2017.01.02 20:17

操作系统设置的代码页不同,导致编码不同

shijing266
shijing266   2017.01.03 10:00

不止是你操作编码的问题,还跟你使用的解密方式有问题,比如js的话,建议用encodeURIComponent ,具体参照:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

qq_35735823
qq_35735823   2017.01.03 13:05

配置服务器server.xml 端口编码为utf-8具体自行百度

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java同样的汉字在服务器和本地的电脑上URLencode 出来的结果不一致
Java同样的汉字在服务器和本地的电脑上URLencode 出来的结果不一致在CSDN问答中看到这个问题,通常这类问题都是由于字符串的编码导致的。代码如下: String oldStr = new String("中文字符"); //我的环境默认UTF-8 System.out.println(URLEncoder.encode(oldStr));
Unicode下汉字URLEncode解决方法
//汉字EnCode .h  int UniToUTF8(CString strUnicode,char *szUtf8);  CString UniToUrlEncode(const char* szEncode); .cpp   int CWeatherPropertyDlg::UniToUTF8(CString strUnicode,char *szUtf8) {  //Me
本地和oj同样数据测出来不同结果的原因
1.11在做codevs1014装箱问题的时候,由于我编程水平不够,发生了一件令当时的我匪夷所思的事。特此记录,防止今后在出现类似问题。 题目描述 Description: 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入描述 Input Descripti
将汉字转换成UTF8编码的URLEncode
google搜索表单接收的是UTF8编码数据,如果直接在地址栏上输入http://www.google.com/search?hl=zh-CN&q=griefforyou的程序人生 ,后面的汉字会变成乱码正确的方法是将汉字转换成UTF8编码的URL Encode代码如:http://www.google.com/search?hl=zh-CN&q=griefforyou%E7%9A%84%E7
python urlencode
url中的query带有特殊字符(不是url的保留字)时需要进行编码。当url中带有汉字时,需要特殊的处理才能正确编码,以下都只针对这种情形,当然也适用于纯英文字符的url。(1) url编码 import urllib url = 'http://test.com/s?wd=哈哈' url = url.decode('gbk', 'replace') url = url.encode('utf-8
iOS utf-8和urlEncode的区别
iOS utf-8和urlEncode的区别
retrofit 进行 URLencode 结果出现乱码。
大家应该对URLencode 并不陌生, 一种编码格式,多应在网络请求的数据层。java 底层封装的方式是java.net.urlencode.encode()这个方法(全靠记忆,写错多包涵)。这个类是将一个字符串转成不同编码格式的URLencode。 我也是接触Retrofit不久,也在摸索之中,以往的项目中,都会进行URLencode转码的在,这次也是一样,结果就遇得到了坑,每次转码之后,都
urlencode
数字、字母、点、下划线、中线【减号】、星、除外,都要编码 空格特殊,转成加号
同样的Python代码在PyCharm和Pydev里面的运行结果不一致
PyCharm和Pydev下运行相同Python代码的不同不结果,并分析原因。
c语言urlEncode实现
#include "stdafx.h" #include "assert.h" #include using namespace std; unsigned char ToHex(unsigned char x) { return x > 9 ? x + 55 : x + 48; } unsigned char FromHex(unsigned char x) { unsigned c