Tag: 编码

为什么这个BufferedReader没有以指定的UTF-8格式读取?

我正在抓几个网站,其中一些包含非拉丁字符和特殊字符,如“用于引号而不是”和’用于撇号而不是’ 。 这是真正的曲线球…… 我将相关文本打印到控制台。 当我在IDE(Netbeans)中运行它时,一切都编码良好。 但是当我在我的电脑上运行时, “I Need Your Help”打印出来: ΓÇ£I Need Your HelpΓÇ¥ … 在有人说我需要将我的JAVA_TOOL_OPTIONS环境变量设置为-Dfile.encoding=UTF8让我说我已经这样做了,这仍然是一个问题。 此外,我不应该指定缓冲读卡器的编码为”UTF-8″覆盖它吗? 这是一些信息: 我正在使用目标平台的JDK 7作为1.7 我正在运行Windows 7机器上运行我正在运行的所有机器并遇到同样的问题(有些没有设置JAVA_TOOL_OPTIONS ,但这似乎没有任何区别)。 我认为它使用的默认编码是Cp1252 … 这是我的代码。 让我知道您是否需要更多信息。 谢谢! /** * Using the given url, this method creates and returns the buffered reader for that url * * @param urlString * @return * @throws MalformedURLException * […]

Jetty响应字符编码

如何在对UTF-8的响应中设置默认字符编码? 我试过这个 System.setProperty(“file.encoding”, “UTF-8”); 和这个 System.setProperty(“org.eclipse.jetty.util.UrlEncoding.charset”, “utf-8”); 两者都没有任何效果 – 响应仍然与标题一起发送 Content-Type: text/html; charset=ISO-8859-1 我想对所有text / html响应执行此操作,理想情况下是代码而不是XML。 我正在使用Jetty 9。

用户提供的url属性的ESAPI XSS预防

我的一个REST API期望一个属性“url”,它希望URL作为用户的输入。 我正在使用ESAPI来防止XSS攻击。 问题是用户提供的URL就像 http://example.com/alpha?abc=def&phil=key%3dbdj 来自ESAPI编码器的cannonicalize方法抛出入侵exception,声称输入具有混合编码,因为它是url编码的,并且片段’&phi’被视为HTML编码,因此是exception。 我有一个类似的问题,清理我的一个应用程序URL,其中第二个查询参数以’pa’或’pi’开头,并通过HTML解码转换为delta或pi字符。 请参阅我之前的Stackoverflow问题 现在问题在于,由于整个URL都是来自用户的输入,我不能简单地解析Query参数并单独清理它们,因为可以结合两个查询参数创建恶意输入并单独清理它们不会在那里工作案件。 示例:&ltscr来自第一个查询参数值和ipt&gtalert(0)的最后一部分; 或者某些东西作为下一个查询参数控制上下文的第一部分。 有没有人遇到过类似的问题? 我真的很想知道你们实施了哪些解决方案。 谢谢你的任何指示。 编辑:来自’avgvstvs’的以下答案不会引发入侵exception(谢谢!)。 但是,cannonicalize方法现在更改原始输入字符串。 ESAPI将查询参数的phi视为一些html编码的char并将其替换为’?’ 焦炭。 像我之前在这里链接的问题。 区别在于我的应用程序的URL,而这是用户输入。 我唯一的选择是在这里保留一份白名单吗?

Java,XML DocumentBuilder – 在解析时设置编码

我正在尝试保存一个树(扩展JTree ),它将XML文档保存到DOM Object并改变了它的结构。 我创建了一个新的文档对象,遍历了树以成功检索内容(包括XML文档的原始编码),现在有一个ByteArrayInputStream ,它具有正确编码的树内容( XML文档)。 问题是,当我解析ByteArrayInputStream ,编码会自动更改为UTF-8 (在XML文档中)。 有没有办法防止这种情况并使用ByteArrayInputStream提供的正确编码。 值得补充的是,我已经使用了 transformer.setOutputProperty(OutputKeys.ENCODING, encoding)方法检索正确的编码。 任何帮助,将不胜感激。

如何将字符从Oracle编码为XML?

在我的环境中,我使用Java将结果集序列化为XML。 它基本上是这样的: //foreach column of each row xmlHandler.startElement(uri, lname, “column”, attributes); String chars = rs.getString(i); xmlHandler.characters(chars.toCharArray(), 0, chars.length()); xmlHandler.endElement(uri, lname, “column”); 在Firefox中,XML看起来像这样: 10069 sd FCVolume 但是当我解析XML时,我得到了a org.xml.sax.SAXParseException:字符引用“ &#26 ”是无效的XML字符。 我现在的问题是:我必须更换哪些字符,或者如何编码我的字符,它们将是有效的XML?

将resourcebundle读为UTF-8。 getString()方法似乎将编码更改为ISO-8859

我有幸将完整的工作区,项目和文件的编码更改为UTF-8编码。 我们有几个Resourcebundles,用于使用unicode编写特殊字符。 我们还希望通过切换到UTF-8来摆脱那些unicode的东西,所以我也改变了Resourcebundles(.properties)文件的编码并替换了Unicode字符。 我们还有德国资源捆绑和一些像 Ä,Ö,Ü,ß。 ä,ö,ü以及像“或”这样的特殊字符 在浏览器中未正确显示。 例: Resourcebundleentry: executeShellCommand.label =Shellkommandoausführen 结果在浏览器中: 使用Java.util.ResourceBundle.getString(String key)方法读取resourcebundle: public String getLocalizedString(ResourceBundle bundle, String key) { try { System.out.println(“getLocalizedString, key: ” + key + “, resourcebundle: ” + bundle.getString(key)); return bundle.getString(key); } catch (MissingResourceException e) { return key; } } 如果我检查上面的Sysout的输出我得到以下: getLocalizedString, key: executeShellCommand.label, resourcebundle: Shellkommando ausführen 似乎getString(key)方法在将字符串从字符串读取到标准resourcbundleencoding(ISO-8859)时更改字符的编码 。 我试图解决这个问题: […]

ECC PublicKey的Java紧凑表示

java.security.PublicKey#getEncoded()返回密钥的X509表示,在ECC的情况下,与原始ECC值相比增加了很多开销。 我希望能够在大多数紧凑的表示中将PublicKey转换为字节数组(反之亦然)(即尽可能小的字节块)。 KeyType(ECC)和具体曲线类型是预先已知的,因此不需要对它们的信息进行编码。 解决方案可以使用Java API,BouncyCastle或任何其他自定义代码/库(只要许可证并不意味着需要使用它的开源专有代码)。

如何将包含字符转义序列的字符串转换为char?

我正在寻找一种方法将包含字符转义序列的字符串转换为表示的字符。 因此,例如,我想将字符串\” (它有两个字符,一个反斜杠和一个双引号)解析为char ” 。 所以,一个字符数组成一个字符。 所以可能会做这样的事情,反之亦然: package test; public class Test { private static char parseChar(String string) { char c = 0; if (“\\n”.equals(string)) { c = ‘\n’; }else if (“\\t”.equals(string)) { c = ‘\t’; }else if (“\\r”.equals(string)) { c = ‘\r’; }else if (“\\f”.equals(string)) { c = ‘\f’; }else if (“\\b”.equals(string)) { c […]

URI编码的URL将“%3D”更改为“%253D”

我在编写URI的URL时遇到问题: mUrl = “A string url that needs to be encoded for use in a new HttpGet()”; URL url = new URL(mUrl); URI uri = new URI(url.getProtocol(), url.getAuthority(), url.getPath(), url.getQuery(), null); 这不符合我对以下URL的期望: 传入字符串: http://m.bloomingdales.com/img?url=http%3A%2F%2Fimages.bloomingdales.com%2Fis%2Fimage%2FBLM%2Fproducts%2F3%2Foptimized%2F1140443_fpx.tif%3Fwid%3D52%26qlt%3D90% 2C0%26layer%3Dcomp%26op_sharpen%3D0%26resMode%3Dsharp2%26op_usm%3D0.7%2C1.0%2C0.5%2C0%26fmt%3Djpeg&TTL = 30D 出来是: http://m.bloomingdales.com/img?url=http%253A%252F%252Fimages.bloomingdales.com%252Fis%252Fimage%252FBLM%252Fproducts%252F3%252Foptimized%252F1140443_fpx.tif%253Fwid%253D52%2526qlt%253D90% 252C0%2526layer%253Dcomp%2526op_sharpen%253D0%2526resMode%253Dsharp2%2526op_usm%253D0.7%252C1.0%252C0.5%252C0%2526fmt%253Djpeg&TTL = 30D 哪个坏了。 例如, %3D变成%253D它似乎对字符串中的%已经做了一些神秘的事情。 发生了什么事,我在这里做错了什么?

JExcel中的编码问题

我正在使用JExcel在GAE / Java应用程序中加载excel文件,如下所示: 上传文件的html表单如下: 在服务器上我有: ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iterator = upload.getItemIterator(request); while (iterator.hasNext()) { FileItemStream item = iterator.next(); InputStream stream = item.openStream(); if (!item.isFormField()) { //if it’s not a form field it’s a file Workbook workbook = Workbook.getWorkbook(stream); … String name = sheet.getCell(COL_NUMBER, row).getContents(); } } 问题是,如果我在单元格中写入类似“ cityó ”的内容,当它在服务器中读取时,变量名称是“ city”? ”。 编码不正常。 […]