我正在使用java applet浏览远程服务器上的文件/文件夹(ftp / cifs)。 问题是,如果远程服务器上的文件夹以非ASCII字符(例如日语或中文)命名,则applet无法启动。 我已经追溯了这个问题,这个问题似乎是由于服务器响应中非ascii字符串的错误解析引起的。以下是服务器的xml响应片段。
<?xml version="1.0" encoding="utf-8" ?><a:multistatus xmlns:b="urn:uuid:/" xmlns:c="xml:" xmlns:a="DAV:">
<a:response><a:href>https://xx.xx.xx.xx/folder/äèä¸?能æ£å¸¸å·¥ä½œ</a:href><a:propstat><a:status>HTTP/1.1 200 OK</a:status>
请求服务器的charset编码为utf-8,如上所述。垃圾查找字符串是我正在尝试使用applet查看的远程web文件夹,该文件夹实际上名为不能正常工作。由于两者不相等(实际文件夹名称和xml中的文件夹名称),因此java xml解析在尝试启动applet时会引发错误。请建议可以采取哪些措施来解决这个问题。我也没有使用SAX解析器,我正在使用XML解析器,然后创建一个DOM对象
答案 0 :(得分:0)
您发布的XML似乎包含垃圾字符。我的意思是那些unicode角色在创作时被破坏了。因此,首先要检查的是确保使用正确的API变体,它将charset作为参数,并在这些地方使用UTF-8作为参数。在服务器和客户端上只需仔细检查API 。例如,如果您在任何地方创建InputStreamReader,请确保您使用的是InputStreamReader(InputStream in,Charset cs)等。