我有一个java webapp,它从磁盘上的文件读取并返回所需的值。磁盘上的文件包含UTF-8字符。
文件内容示例:
lähedus teeb korterist atraktiivse üüriobjekti välismaalastele
当webapp在localhost*
上运行时,servlet从磁盘读取并返回:
lähedus teeb korterist atraktiivse üüriobjekti välismaalastele
当我在单独的服务器上运行相同的应用程序时,相同的请求会返回此信息:
l??hedus teeb korterist atraktiivse ????riobjekti v??lismaalastele
这纯粹是一个编码问题,但我不知道如何解决它。
我尝试过:
我将此添加到config / server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8"/> <!-- THIS PART
但它没有帮助。 我应该在配置中更改什么才能让它在服务器上运行? 谢谢!
修改
我正在从包含json字符串的服务器上的txt文件中读取。 我正在使用java BufferReader来读取内容。正如我在评论中提到的,这个问题不是由读者引起的,因为同样适用于localhost。
我通过servlet发送响应,它只是刷新json字符串。与读者一样的故事。
我在发出请求的任何客户端上都会出现问号(浏览器,安卓等)。
答案 0 :(得分:1)
您的本地文件似乎是UTF-8,错误地转换为某些单字节编码。当人们看到一个特殊字符的多字节序列导致两个不可转换的字符(?
)。
应用程序在没有编码规范的情况下读取它,因此使用系统的编码。那不是你想要的东西。
然后你需要找到错误的阅读代码:通常有一个重载方法,可以添加编码。然而臭名昭着的是FileReader,该实用程序类总是使用默认编码。检查出现的情况:
为了良好的顺序,但可能不是这里的情况:任何产生该文本的响应都应该在content-type中指定charset。