Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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转换特殊字符?_Java_Special Characters_Htmlspecialchars - Fatal编程技术网

如何使用java转换特殊字符?

如何使用java转换特殊字符?,java,special-characters,htmlspecialchars,Java,Special Characters,Htmlspecialchars,我有这样的字符串: Avery® Laser & Inkjet Self-Adhesive 我需要把它们转换成 Avery Laser & Inkjet Self-Adhesive. 也就是说,删除特殊字符并将html特殊字符转换为常规字符。您可以使用project中的类。也许您可以使用如下内容: yourTxt = yourTxt.replaceAll("&", "&"); public String replaceAcutesHTML(

我有这样的字符串:

Avery® Laser & Inkjet Self-Adhesive
我需要把它们转换成

Avery Laser & Inkjet Self-Adhesive.

也就是说,删除特殊字符并将html特殊字符转换为常规字符。

您可以使用project中的类。

也许您可以使用如下内容:

yourTxt = yourTxt.replaceAll("&", "&");
public String replaceAcutesHTML(String str) {

str = str.replaceAll("á","á");
str = str.replaceAll("é","é");
str = str.replaceAll("í","í");
str = str.replaceAll("ó","ó");
str = str.replaceAll("ú","ú");
str = str.replaceAll("Á","Á");
str = str.replaceAll("É","É");
str = str.replaceAll("Í","Í");
str = str.replaceAll("Ó","Ó");
str = str.replaceAll("Ú","Ú");
str = str.replaceAll("ñ","ñ");
str = str.replaceAll("Ñ","Ñ");

return str;
在某个项目中,我做了如下工作:

yourTxt = yourTxt.replaceAll("&", "&");
public String replaceAcutesHTML(String str) {

str = str.replaceAll("á","á");
str = str.replaceAll("é","é");
str = str.replaceAll("í","í");
str = str.replaceAll("ó","ó");
str = str.replaceAll("ú","ú");
str = str.replaceAll("Á","Á");
str = str.replaceAll("É","É");
str = str.replaceAll("Í","Í");
str = str.replaceAll("Ó","Ó");
str = str.replaceAll("Ú","Ú");
str = str.replaceAll("ñ","ñ");
str = str.replaceAll("Ñ","Ñ");

return str;
}

…产生

Avery Laser & Inkjet Self-Adhesive Avery激光与喷墨自粘 (没有您示例中的尾随点,但原始版本中没有尾随点;)


也就是说,这看起来更像是对解决方案的请求,而不是对解决方案的请求。如果您详细说明功能需求和/或该字符串的来源,我们可能能够提供正确的解决方案。
看起来像是由于使用错误的编码来读取中的字符串和
&
看起来是由于使用基于文本的解析器而不是成熟的HTML解析器读取字符串造成的。

如果您想模拟php函数htmlspecialchars\u decode使用php函数get\u HTML\u translation\u table()转储表,然后使用java代码,如

    static Hashtable html_specialchars_table = new Hashtable();
    static {
            html_specialchars_table.put("&lt;","<");
            html_specialchars_table.put("&gt;",">");
            html_specialchars_table.put("&amp;","&");
    }
    static String htmlspecialchars_decode_ENT_NOQUOTES(String s){
            Enumeration en = html_specialchars_table.keys();
            while(en.hasMoreElements()){
                    String key = (String)en.nextElement();
                    String val = (String)html_specialchars_table.get(key);
                    s = s.replaceAll(key, val);
            }
            return s;
    }
static Hashtable html_specialchars_table=new Hashtable();
静止的{
html_specialchars_table.put(“,”);
html_specialchars_table.put(“&;”、“&”);
}
静态字符串htmlspecialchars_decode_ENT_NOQUOTES(字符串s){
枚举en=html_specialchars_table.keys();
while(en.hasMoreElements()){
字符串键=(字符串)en.nextElement();
String val=(String)html_specialchars_table.get(key);
s=s.replaceAll(键,值);
}
返回s;
}

我很感兴趣的是,为什么要得到HTML编码的字符串。。。在我的“理想”应用程序中,程序员永远不应该。。。(只需将结果编码为html,但接收到它…永远不会)这是一个遗留代码,它将数据保存为我需要读取和转换的原始格式。如果有奇怪的字符。。。看起来它最初是一个UTF-8字符,被解码(读取)为ISO-8859-1(西方ISO)。。。举个例子。如果你有一个π,它在UTF-8中有2个字节,所以如果你在iso western中读取它,它会读取到奇怪的字符。如果是这种情况,并且您知道您编码的编码使用
新字符串(byte[],encodingName)
someString.getBytes(encodingName)
来获得好的字符。这意味着您需要取消HTML中每个占位符的每次出现,这是一个难题,特别是当有人已经为你写了它的时候。这会起作用,但这不是一个理想的方法。要做到这一点,您必须构建(并维护)一组要替换的所有特殊字符。在可能的情况下,使用现有库或编码器比手动替换要好。它也恰好更容易实现,而且不那么繁琐!是的,尾随点是我的打字错误)你说得对,这种字符串是基于文本的解析器读取html的结果。