使用NetBeans生成的dist jar中的字符编码错误

时间:2009-12-04 07:38:05

标签: java character-encoding

我终于给我写了一个小app。它是桌面应用程序,但它有嵌入式Web服务器。当我从NetBeans中推出它时,一切都还可以。当我吃午餐时,我在GUI中有正确的字符编码,但是Web服务器输出已损坏(“?”而不是国家字符。)

我使用NetBeans 6.7.1,jdk1.6.0_16,来自Java 6 SE和lib Rome 1.0的http服务器

我没有在这里放任何源代码,因为我不知道我应该放置什么。

//编辑: 数据在字符串中是硬编码的。这些字符串作为创建RSS节点的参数传递给罗马,将罗马的RSS源写入String,然后将字符串传递给HttpHandler。

2 个答案:

答案 0 :(得分:3)

  • 检查encoding in the source files
  • 检查执行encoding/decoding的任何位置(通常是String -> byte[]byte[] -> String的任何位置)。将字节转换为字符串的任何操作都在执行编码操作myEncoding -> UTF-16
  • 检查您是否将相应的编码信息传递给执行编码/解码的第三方库。
  • 如果生成XML,请确保标头编码与用于写入字节的编码匹配(<?xml version="1.0" encoding="UTF-8"?>)。
  • 如果通过HTTP提供内容,请确保内容类型和字符集header正确无误(例如Content-Type: text/html; charset=utf-8)。字符集通常仅在提供文本MIME类型时才适用(例如,它不适用于application/rss+xml)。检查您的MIME文档。

答案 1 :(得分:2)

此问题可能与NetBeans无关。通常字符编码问题是由于定义了某处的字符编码,在这种情况下,实际的字符编码几乎可以通过运气来确定。

例如,Java Strings在内部是UTF-16,但Java Readers使用的编码由平台默认确定,除非明确指定。