Tag: 编码

Java中的麻烦百分比编码空间

我正在使用W3C的URLUTF8Encoder.java类( www.w3.org/International/URLUTF8Encoder.java )。 目前,它会将任何空格”加编成加号’+’。 我无法修改代码以将空白百分比编码为’%20’。 不幸的是,我对hex并不太熟悉。 谁能帮我吗? 我需要修改这个片段…… else if (ch == ‘ ‘) { // space sbuf.append(‘+’); 在以下代码中: final static String[] hex = { “%00”, “%01”, “%02”, “%03”, “%04”, “%05”, “%06”, “%07”, “%08”, “%09”, “%0A”, “%0B”, “%0C”, “%0D”, “%0E”, “%0F”, “%10”, “%11”, “%12”, “%13”, “%14”, “%15”, “%16”, “%17”, “%18”, “%19”, “%1A”, “%1B”, “%1C”, “%1D”, […]

如何让XSLT在Java中返回UTF-8

我正在尝试让我的XSL脚本使用UTF-8编码。 像åäö和希腊字符这样的人物就像垃圾一样。 让它工作的唯一方法是将结果写入文件。 如果我将它写入输出流,它只返回垃圾(System.out工作,但这可能是因为它的重定向到文件)。 结果需要从servlet返回,请注意它不是servlet配置问题。 我可以从servlet返回带有希腊字符的硬编码字符串,它工作正常,所以这是转换的问题。 这是我目前的(简化)代码。 protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { try { response.setCharacterEncoding(“UTF-8”); response.setContentType(“text/html; charset=UTF-8”); final TransformerFactory factory = this.getFactory(); final File inFile = new File(“infile.xml”); final File xslFile = new File(“template.xsl”); final File outFile = new File(“outfile.html”); final Templates templates = factory.newTemplates(new StreamSource(xslFile)); final Transformer […]

AES解密方法出错

我有解密的真正问题,不知道如何解决这个’java.crypto.BadPaddingException’。 我有一个类似的以前的系统工作得很好,现在我已经停止了上周。 我已经阅读了很多stackoverflow线程,但没有一个能真正解决我的问题…除非当然,我根本就不理解它。 我的问题出现在login方法中,它说: byte[] decrypted = cipher.doFinal(p.getBytes()); public void register() { // ENCRYPT PASSWORD try { String key = username; // 128bit key (16*8) String text = password; // CREATE KEY AND CIPHER Key aesKey = new SecretKeySpec(key.getBytes(), “AES”); Cipher cipher = Cipher.getInstance(“AES”); // ENCRYPT THE TEXT cipher.init(Cipher.ENCRYPT_MODE, aesKey); byte[] encrypted = cipher.doFinal(text.getBytes()); System.out.println(“Encrypted: […]

Tomcat的“URIEncoding”,编码filter和request.setCharacterEncoding有什么区别?

可能有很多方法可以解决编码问题: 编码filter,如Spring MVC UTF-8编码 在Tomcat的server.xml中设置URIEncoding = UTF-8,如http://struts.apache.org/release/2.1.x/docs/how-to-support-utf-8-uriencoding-with-tomcat.html 。 request.setCharacterEncoding(utf-8) 今天,我有一个问题,路径参数不能很好地解码 @ResponseBody @RequestMapping(value=”/context/method/{key}”,method=RequestMethod.GET,produces = “application/json;charset=utf-8”) public String method(@PathVariable String key){ logger.info(“key=”+key+”————“); } 我可以看到密钥被解码坏了! 如果我从前端传出一个词”新浪” ,它就会变成”æ°æµª” 。 我编写以下代码来检查服务器是否使用“ISO-8859-1”对其进行解码: public static void main(String args[]) throws UnsupportedEncodingException{ String key=”新浪”; byte[] bytes=key.getBytes(“UTF-8″); String decode=new String(bytes,”ISO-8859-1″); System.out.println(decode); } 它出现了相同的输出”æ°æµª” 。 实际上,路径变量用ISO-8859-1解码。 然后我尝试在我的web.xml添加一个filter来解决这个问题: encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /* 但是同样的乱码。 […]

在java中输出为UTF-8编码

我使用eclipse的程序输出文件有问题.i将我的eclipse设置为UTF-8并使用 System.getProperty(“file.encoding”) 我得到UTF-8.i通过eclipse run-option运行我的prog并且输出(文本文件)以UTF-8编码。但是当我将源代码压缩成jar文件时,输出文件显示某些错误当在eclipse和frm jar文件中重新编写prog时,像.what这样的字母是什么?我必须在源代码中指定要在utf-8中编码的输出吗?请帮忙。 来自@dacwe的帮助确实产生了所需的输出。但是我可以知道如何在命令行外运行我的可执行文件.jar文件吗?-Dfile.encoding = UTF-8怎么样? @dacwe:我尝试将源代码更改为 BufferedWriter bout = new java.io.BufferedWriter(new java.io.OutputStreamWriter( new java.io.FileOutputStream(filename), “UTF-8”)); 但输出仍然没有正确编码。我想念的是什么?

Tomcat / Linux上的UTF-8和Servlet

我在Tomcat 6 / Linux上从servlet读取和编写UTF-8时遇到了一些问题。 请求和响应是utf-8,浏览器是utf-8,URIEncoding是在连接器和主机上的server.xml中设置的。 简而言之,代码本身对我来说每个已知的东西,服务器配置都是utf-8。 在读取请求时,我不得不从String中获取字节数组,然后再将该字节数组转换为String。 写入请求时,我必须写入字节,而不是字符串本身,以便得到正确的响应(否则我会得到一个exception,说明某些非ASCII字符无效ISO 8859-1)。

Java从Servlet读取未解码的URL

我们假设我有像’=&?/;#+%’这样的字符串作为我url的一部分,让我们这样说: example.com/servletPath/someOtherPath/myString/something.html?a=b&c=d#asdf 其中myString是上面的字符串。 我编写了关键部分,因此URL看起来像 example.com/servletPath/someOtherPath/%3D%26%3F%2F%3B%23%2B%25/something.html?a=b&c=d#asdf 到现在为止还挺好。 当我在servlet中并且我读取request.getRequestURI() , request.getRequestURL()或request.getPathInfo() ,返回的值已经被解码,所以我得到像strilng一样 someOtherPath/=&?/;#+%/something.html?a=b&c=d#asdf 我无法区分真正的特殊字符和编码字符。 我通过完全禁止上面的字符解决了特殊的问题,这在这种情况下有效,但我仍然想知道有没有办法在servlet类中获取未解码的URL。 另一个编辑:当我昨晚遇到这个问题时,我太累了,无法注意到真正发生的事情,这更奇怪! 我有servlet映射,比如/ servletPath / *之后,我可以放任何我想要的东西,并根据路径的其余部分让我的servlet响应, 除非路径中有%2F。 在那种情况下, 请求永远不会访问servlet ,我得到404! 如果我把’/’代替%2F它可以正常工作。 我正在Linux上运行Java 1.6.0-04上的Tomcat 6.0.14。

日语和中文的上传文件名编码问题

我目前正在使用jQuery-File-Upload 。 我可以上传一些带有日文或中文文件名的文件,我可以看到文件名是例如浏览器调试模式中的“お疲れ様です.txt”或“测试文档.txt”,但是在后端(Java) ,它们变成了“ -ãã,Œæ§~㠧㠙.txt”和“æμ<试æ-‡æ¡£.txt”。 我曾经尝试将formAcceptCharset设置为UTF-8,但它不起作用。 题: 解析MultipartFormData时如何在Java端获取正确的文件名? 提前致谢。 BTW,以下是我的数据 —————————–25382434931419 Content-Disposition: form-data; name=”file”; filename=”ã?Šç–²ã‚Œæ§˜ã?§ã?™.txt” Content-Type: text/plain …. 添加Java代码 事实上我目前在Java方面什么都没做, @POST @Consumes(MediaType.MULTIPART_FORM_DATA) public String upload(InMultiPart inMP) { while (inMP.hasNext()) { InPart part = inMP.next(); MultivaluedMap headers = part.getHeaders(); String fileName = null; if (!headers.containsKey(“Content-Disposition”)) { continue; } else { // get the file […]

Java – XML中的图像编码

我以为我会相对容易地找到解决这个问题的方法,但在这里,我呼吁你们众神的帮助让我摆脱这个难题。 所以,我有一个图像,我想用Java将它存储在XML文档中。 我以前通过将图像保存到流中,将流转换为数组,然后VB的xml类能够将数组编码为base64字符串,在VisualBasic中实现了这一点。 但是,经过几个小时的网络淘网寻找Java中的等效解决方案后,我空手而归。 我唯一的成功是: import it.sauronsoftware.base64.*; import java.awt.image.BufferedImage; import org.w3c.dom.*; … BufferedImage img; Element node; … java.io.ByteArrayOutputStream os = new java.io.ByteArrayOutputStream(); ImageIO.write(img, “png”, os); byte[] array = Base64.encode(os.toByteArray()); String ss = arrayToString(array, “,”); node.setTextContent(ss); … private static String arrayToString(byte[] a, String separator) { StringBuffer result = new StringBuffer(); if (a.length > 0) { result.append(a[0]); […]

更改HttpServletResponse的编码

我有一个返回XML的API,它实际上使用默认编码返回它(我相信它是UTF-8),但现在需求已经改变,我们需要返回UTF-16LE中的所有内容。 我的问题是:有一种简单的方法吗? 我可以在呼叫完成之前访问响应,所以我想知道我是否可以做类似的事情 //This method does not exist response.setCharacterEncoding(“UTF-16LE”); 非常感谢! 更新:提到的方法是使用的方法。 我使用的是不包含它的servlet API的旧版本(2.3)。 更改版本修复了所有问题。