原来他是这样写的:
window.self.location="searchbytext.action?searchtext="+encodeURIComponent(seartext);
java处理的代码为:
searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/
咋一看觉的没问题啊,一编一解的,应该可以了。但还是出现了乱码。
后来网搜资料,发现原来在对后台java程序里的searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/进行一次解码就好了。
正确的代码:
JavaScript:
window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));
java:
searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/
另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:
java代码:
String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");
相关推荐
在Java后台处理中,也可以使用decodeURI、decodeURIComponent函数来解码URI中的编码字符串。 JavaScript和JavaWeb对汉字编码的策略非常重要,正确的编码和解码处理对于确保数据的正确传输和显示至关重要。
在前端使用ExtJS框架时,可以通过`encodeURI()`或`encodeURIComponent()`函数来对中文字符进行编码。示例代码如下: ```javascript // 定义一个变量用于存储用户输入的中文字符串 var CustomFormName = Ext....
总结起来,当遇到"java.io.CharConversionException: isHexDigit"异常时,应该检查前端传递的URL参数是否正确编码,并确保在服务器端使用正确的解码方法和字符集。使用`encodeURI`或`encodeURIComponent`函数代替`...
这里需要注意的是,服务器端必须明确指定使用`UTF-8`编码进行解码操作,这样才能保证解码后的结果与客户端原始提交的数据一致。 #### 实践案例 假设有一个简单的HTML表单,用户输入中文内容后提交给服务器端处理...
这种方法下,后台Action无需额外进行解码操作,因为jQuery已将参数进行了一次`encodeURIComponent`处理。 **C++与Java的设计选择对比** 虽然这个问题主要涉及Ajax的中文乱码解决方案,但提到了C++与Java的对比。...
例如,将"+"替换为"%2B",将"="替换为"&3D",并进行两次encodeURIComponent编码。最后通过Ajax发送到服务器。 4. **Ajax发送Base64数据**:使用jQuery的Ajax方法,以POST方式发送图片Base64数据到服务器,URL为`...
3. **Java后台处理**: - **方法1**:在后台接收参数时,首先将接收到的ISO-8859-1编码的字符串转换为字节数组,然后使用这个字节数组创建UTF-8编码的字符串。例如: ```java String inStr = request....
前端需要使用`encodeURI()`或`encodeURIComponent()`进行编码,后端则需要使用相应的解码函数,并且在整个过程中保持字符集的一致性。同时,正确设置请求头和响应头也是避免乱码问题的重要环节。通过以上方法,可以...
- 对含有中文的参数进行编码:`encodeURIComponent(encodeURIComponent("XXX"))`,其中“XXX”是含有中文的参数值。 2. **后端处理**: - 使用`URLDecoder.decode("XXX", "UTF-8")`解码。其中,“XXX”是前台传递...
因此,必须先将其转回ISO-8859-1编码,再按照客户端的编码格式(如UTF-8)进行解码,才能正确读取中文等多字节字符。 ```java HttpServletRequest request = ServletActionContext.getRequest(); try { String key...
在JavaScript中,可以使用`encodeURIComponent()`函数进行编码,而在Java后端则需要解码,如使用`URLEncoder.decode()`方法。 6. **错误处理**:在处理Ajax请求时,我们需要考虑网络问题、服务器错误等各种异常情况...
服务器接收到编码后的请求参数后,需要按照正确的编码格式进行解码,才能正确解析客户端发来的数据。在Java中,可以通过指定字符编码,如UTF-8,来解码获取到的请求参数,例如: ```java String fileName = request...
对于中文文件名的处理,需要在URL中正确编码中文字符,一般使用`encodeURIComponent()`函数进行编码,服务器接收到请求后解码并返回正确的文件。如果服务器支持动态设置文件名,还可以在HTTP响应头的`Content-...
一种解决方案是先在客户端使用`encodeURI()`或`encodeURIComponent()`函数对中文字符进行编码,然后在服务器端进行解码。对于Firefox,这种方式通常有效,但在IE中可能需要额外处理。对于IE,建议直接使用`encodeURI...
// 对提交给后台的参数进行 UTF-8 的编码处理 private function httpEncoding(param:String):String{ return encodeURIComponent(param); } private function doLogin():void { var url:String = ...
在后台Action中,接收到URL参数后,需要使用相应的解码方法将其还原。在Java中,可以使用`java.net.URLDecoder`类的`decode()`方法来解码URL参数。例如: ```java String cNum = contract.getContractNum(); ...
为了解决这个问题,开发者通常会在前端对中文参数进行编码,如使用encodeURIComponent函数,然后在后台解码,通常是用UTF-8字符集解码。然而,这种做法增加了代码的复杂性,并且每次传递都需要进行编码解码操作。 ...
- 在涉及客户端与服务器端编码转换的JavaScript函数中,正确使用`encodeURI`或`encodeURIComponent`进行编码,避免重复编码导致的乱码问题。在上述代码中,`encodeURI`被错误地调用了两次。 ```javascript ...