Tag: 编码

如何处理参数值中的特殊字符?

我的Java Servlet有一些问题,如果在GET参数中使用特殊字符(如Æ,ØogÅ)调用它: http:// localhost:8080 / WebService / MyService?test =Øst。 我在doGet有这个代码: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(request.getParameterValues(“test”)[0]); } 控制台中打印的消息是: Ã?st 。 Web Service应该能够处理这样的调用。 如何以正确的方式编码参数值?

恢复错误编码的字符(Java)

我们在Linux中使用cron运行了一些java代码,以便在生产数据库中保存数千条记录。 该框中的locale charmap是“ANSI_X3.4-1968”。 现在,我们采取了以下步骤,然后将它们保存到数据库中。 1.在文本上使用StringEscapeUtils.unescapeHtml4 2.以UTF-8格式写入字符串并在数据库中保留 现在问题是在这些步骤之后,特殊字符显示为“?”。 是否有可能将其恢复为原始角色? 我已通过以下步骤模拟了问题。 将Eclipse编码更改为“ANSI_X3.4-1968” 写下面的代码行 String insertSpecial = StringEscapeUtils.unescapeHtml4(“×”); System.out.println(insertSpecial); String uni = new String(insertSpecial.getBytes(), “UTF-8”);// This value is currently in DB System.out.println(uni); 现在我想从字符串“uni”中取回“×”。 任何帮助将不胜感激。

在java中将字符串从一种编码解释为另一种编码

我四处寻找答案(我确定他们在那里),我不确定这是可能的。 所以,我收到了一个包含“för”字样的巨大文件。 我正在使用RandomAccessFile,因为我知道它的位置(种类),因此可以使用seek()函数来实现。 要知道我已经找到它,我的程序中有一个字符串“för”,我检查是否相等。 这是问题,我运行调试器,当我得到“för”时,我得到的比较是“för”。 所以我的程序终止而没有找到任何“för”。 这是我用来获取单词的代码: private static String getWord(RandomAccessFile file) throws IOException { StringBuilder stb = new StringBuilder(); String word; char c; c = (char)file.read(); int end; do { stb.append(c); end = file.read(); if(end==-1) return “-1″; c = (char)end; } while (c != ‘ ‘); word = stb.toString(); word.trim(); return word; } 所以基本上我将所有字符从文件中的当前点返回到第一个”字符。 […]

将unicode写入rtf文件

我正在尝试用不同语言将字符串写入rtf文件。 我尝试了一些不同的东西。 我在这里使用日语作为例子,但我尝试过的其他语言也是如此。 public void writeToFile(){ String strJapanese = “日本語”; DataOutputStream outStream; File file = new File(“C:\\file.rtf”); try{ outStream = new DataOutputStream(new FileOutputStream(file)); outStream.writeBytes(strJapanese); outStream.close(); }catch (Exception e){ System.out.println(e.toString()); } } 我也尝试过: byte[] b = strJapanese.getBytes(“UTF-8”); String output = new String(b); 或者更具体: byte[] b = strJapanese.getBytes(“Shift-JIS”); String output = new String(b); 输出流还具有writeUTF方法: outStream.writeUTF(strJapanese); 您可以使用write方法直接在输出流中使用byte []。 […]

无法在MySQL中插入非拉丁符号

我正在使用MySQL版本5.1.45,Tomcat 5.5.28和Hibernate 3编写web应用程序 当我试图保存包含非拉丁字符的字符串(例如Упячка)时,会发生错误: 1589 [main] WARN org.hibernate.util.JDBCExceptionReporter – SQL Error: 1366, SQLState: HY000 1589 [main] ERROR org.hibernate.util.JDBCExceptionReporter – Incorrect string value: ‘\xD0\xA3\xD0\xBF\xD1\x8F…’ for column ‘name’ at row 1 Hibernate连接设置 com.mysql.jdbc.Driver jdbc:mysql://localhost/E2012?characterEncoding=UTF8&useUnicode=true *** *** UTF8 MySQL配置My.cnf [client] default-character-set=utf8 [mysqld] default-character-set=utf8 甚至查询集名称utf-8也无法解决问题 感谢帮助!

在NetBeans 8.0中更改控制台输入编码

我在NetBeans 8.0中找不到更改控制台输入编码的选项。 在Windows中,控制台输入编码默认为Windows 1252,但我想将其更改为UTF-8。 选项在哪里? 谢谢。 编辑: 我发现了怎么做。 从位于NetBeans安装目录的“etc”目录中编辑文件“netbeans.conf”:在“netbeans_default_options”选项中,添加“-J-Dfile.encoding = UTF-8”。

Java unicode字节解析

我只是在从文件中读取一些数据作为字节流,我刚刚遇到一些unicode字符串,我不知道如何最好地处理。 每个字符使用两个字节,只有第一个字符似乎包含实际数据,因此例如字符串’trust’存储在文件中: 0x74 0x00(t) 0x72 0x00(r) …and so on 通常我只是使用正则表达式来替换零,因此删除空格。 但是,文件中的单词之间的空格是使用0x00 0x00实现的,所以尝试做一个简单的String’replaceAll’有点搞乱它。 我已经尝试过使用字符串编码集,例如’ISO-8859-1’和’UTF-8/16’,但每次我最终得到空格。 我创建了一个简单的正则表达式来删除双零hex值,即: new String(bytes).replaceAll(“[\\00]{2,},””); 但这显然只适用于双零,我真的想用零替换单个零,并用实际的ASCII / Unicode空格字符双倍零。 我本可以发誓,其中一个Java字符串格式设置处理了这种事情,但我可能错了。 那么我应该创建一个正则表达式去除零,还是Java实际上提供了执行它的机制? 谢谢

字节到字符串,反之亦然

我需要转换随机生成的salt值并将其存储在数据库中。 为了将它存储在数据库中,我将其转换为字符串。 然后,为了检索原始值,我将其转换回字节。 但两个值都不匹配。 我试过“UTF-8”,“UTF-16”,BASE64Encoder。 SecureRandom ranGen = new SecureRandom(); byte[] aesKey = new byte[16]; // 16 bytes = 128 bits ranGen.nextBytes(aesKey); System.out.println(aesKey); String a=new String(aesKey,”UTF-16″); byte[] b=new byte[16]; b=a.getBytes(“UTF-16”); System.out.println(b); 上述代码的输出(执行2次): [B@11563ff [B@1581593 和 [B@170888e [B@11563ff

是否有一种Java方法将参数集合编码为URL查询组件?

有没有广泛使用的Java库可以执行类似dojo.objectToQuery()的操作? 例如(假设使用HttpCore的HttpParams对象,但任何键值映射都会这样做): HttpParams params = new BasicHttpParams() .setParameter(“foo”, “bar”) .setParameter(“thud”, “grunt”); UnknownLibrary.toQueryString(params); 应该产生“foo = bar&thud = grunt”。 我知道写起来并不难,但似乎应该已经写好了。 我找不到它。

java read write unicode / UTF-8 filenames(not contents)

我有一些日文字符的目录/文件。 如果我尝试读取包含(例如)的文件名(不是内容),则我收到包含 的字符串。 如果我尝试创建一个包含ク的文件/目录,则显示包含?的文件/目录。 例如:我列出了文件。 File file = new File(“.”); String[] filesAndDirs = file.list(); filesAndDirs数组现在包含这个特殊字符的目录。 String现在只包含 。 接缝没有什么可解码的,因为即使对于不同的字符,a getbytes也只显示文件名中每个字符的“-17 -65 -67”。 我使用MacOS 10.8.2 Java 7_10和Netbeans。 有任何想法吗? 先感谢您 :)