0

//host:port/abc/testr-email.html?ans1=NÃO&ans2=NÃO&ans3=NÃO&ans4=SIM&ans5=NÃO&cntr=1&ts=5&pname=TAAA使用URLEncoder.encode(String,"UTF-8");后页面 URL 为 " " 页面路径上的特殊字符转义/编码如下所示。

pagepath = "//host:port/abc/testr-email.html?ans1=N%C3%83O&ans2=N%C3%83O&ans3=N%C3%83O&ans4=SIM&ans5=N%C3%83O&counter=1&totalquestions=5&participantname=TAAA"

下面是我试图读取页面内容的代码片段,其中有一些特殊字符值作为“NÃO”,在 bufferreader 处理将其解码并获取发送给它的电子邮件后,这些值正在丢失其编码功能身体。

代码片段:

url = new URL(pagepath);
 URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());            
            url = uri.toURL();
            URLConnection conn = url.openConnection(); 
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            String inputLine;
            StringBuilder content = new StringBuilder();
            while ((inputLine = br.readLine()) != null) {               
                byte[] byte1 = inputLine.getBytes("UTF-8");
                String sample=new String(byte1, "UTF-8");
                log.info("sample Content ==>" + StringEscapeUtils.unescapeHtml4(sample));
                content.append(sample);

Where the content is an a StringBuilder as below            


StringBuilder content = new StringBuilder();

以及 BufferedReader 丢失 URLEncoded 功能后的内容,以将我的特殊字符转换回解码并将其用于电子邮件。

String tempstring = StringEscapeUtils.unescapeHtml4(content.toString());
                email.setHtmlMsg(tempstring);

我观察到 email.setHtmlMsg(...)。没有我的“ NÃO ”特殊字符,它已将字符转义为“ N%C3%83O ”。
如何取回特殊字符并将其发送到发送电子邮件功能中的 HTML 邮件正文。?

4

1 回答 1

0

使用 theURLDecoder来获取编码字符串中的特殊字符。试试下面的语句。

URLDecoder.decode("N%C3%83O", "UTF-8")
于 2014-11-23T05:30:06.020 回答