Java 如何在BufferReader处理后返回URLEncoded特性以解码和显示特殊字符?
页面URL是“Java 如何在BufferReader处理后返回URLEncoded特性以解码和显示特殊字符?,java,bufferedreader,urlencode,stringescapeutils,Java,Bufferedreader,Urlencode,Stringescapeutils,页面URL是“//主机: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(字符串,“UTF-8”)如下所示,带有转义/编码的特殊字符 pagepath = "//host:port/abc/testr-email.html?ans1=N%C3%83O&ans2=N%C3%83O&ans3=N%C3%83
//主机: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(字符串,“UTF-8”)页面路径上的strong>如下所示,带有转义/编码的特殊字符
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邮件正文 使用
urldecker
从编码字符串中获取特殊字符。试试下面的语句
URLDecoder.decode("N%C3%83O", "UTF-8")