Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用HtlmCleaner在Android上对非英语字符进行错误解码_Java_Android_Encoding_Html Parsing - Fatal编程技术网

Java 使用HtlmCleaner在Android上对非英语字符进行错误解码

Java 使用HtlmCleaner在Android上对非英语字符进行错误解码,java,android,encoding,html-parsing,Java,Android,Encoding,Html Parsing,我正在使用HtmlCleaner在Android中创建一个ISO-8859-1编码的网站 我已经在导入Android应用程序的外部jar文件中实现了这一点 当我在Eclipse中运行单元测试时,它会处理挪威字母(æ,ø,å)是否正确(我可以在调试器中验证这一点),但在Android应用程序中,这些字符看起来像倒置的问号 如果我将调试器连接到我的Android应用程序,我可以看到这些字母在从Eclipse运行单元测试时正确的位置不正确,因此Android应用程序中没有显示/渲染/视图问题 当我从调

我正在使用
HtmlCleaner
在Android中创建一个
ISO-8859-1
编码的网站

我已经在导入Android应用程序的外部
jar
文件中实现了这一点

当我在Eclipse中运行单元测试时,它会处理挪威字母(
æ,ø,å
)是否正确(我可以在调试器中验证这一点),但在Android应用程序中,这些字符看起来像倒置的问号

如果我将调试器连接到我的Android应用程序,我可以看到这些字母在从Eclipse运行单元测试时正确的位置不正确,因此Android应用程序中没有显示/渲染/视图问题

当我从调试器复制文本时,会得到以下结果:

Java过程(单元测试):«Blårek»,«Benny»

Android进程(在模拟器中):«Bl�雷克»,«本尼»

我希望这些字符串是相等的,但请注意“å”在Android中是如何被倒过来的问号重放的

我尝试过运行
htmlCleaner.getProperties().setRecognizeUnicodeChars(true)
,但没有任何运气。此外,我还没有发现在html cleaner中强制使用UTF-8或ISO-8859-1编码的方法,但我不确定这是否会产生影响

以下是我运行的代码:

HtmlCleaner htmlCleaner = new HtmlCleaner();

// connect to url and get root TagNode from HtmlCleaner
InputSteram is = new URL( url ).openConnection().getInputStream();
TagNode rootNode = htmlCleaner.clean( is );

// navigate through some TagNodes, getting the ContentNode 
ContentNode cn = rootNode... 

// This String contains the incorrectly decoded characters on Android. 
// Good in Oracle JVM though..
String value = cn.toString().trim();
有人知道是什么导致Android上的解码行为不同吗?我想这两种环境之间的主要区别在于Android应用程序使用Android的java.io堆栈,而我的单元测试使用Sun/Oracle的堆栈

谢谢,

Geir

HtmlCleaner
无法判断要使用什么编码;您只在
InputStream
中传递响应的主体,但编码在“content-type”标题中


您可以从HTTP连接将
HtmlCleaner
的属性更改为正确的编码。但这需要您从content-type头解析正确的参数。或者,您可以让它管理连接。然后,它将能够访问需要正确解码的所有信息。

HtmlCleaner
无法判断要使用什么编码;您只在
InputStream
中传递响应的主体,但编码在“content-type”标题中

您可以从HTTP连接将
HtmlCleaner
的属性更改为正确的编码。但这需要您从content-type头解析正确的参数。或者,您可以让它管理连接。然后,它将能够访问需要正确解码的所有信息