我有一个字符串,我需要存储在数据库中。现在该字符串确实包含版权符号©。我想将其转换为& copy;这样它就可以在每个浏览器上以及每种编码标准上正确显示。
这是我到目前为止的所在。
- 尝试替换(),这绝对不会影响版权特征
- 尝试通过设置不同的编码标准来转换表以在浏览器中查看数据,它显示为
- 将字符串转换为具有UTF-8字符集的字节数组,并发现-62是版权字符的ASCII值。现在问题是进入的字符串可能非常大并且将其拆分为字节数组然后形成字符串将非常昂贵。
感谢任何帮助。
答案 0 :(得分:4)
这可能无法解决您的编码问题,但可以从标题中回答您的问题。
要对字符串进行HTML转义,我建议Apache Commons Lang
中的StringEscapeUtils
StringEscapeUtils.escapeHtml(String)
要解决您的编码问题..当您想使用UTF-8
时,请确保至少设置了以下一项内容。另外,当设置多个时,所有这些都必须保持一致。
Content-Type: text/html; charset=utf-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta charset="utf-8">
<?xml version="1.0" encoding="UTF-8"?>
同时确保您提供的内容真的是UTF-8编码。我建议使用没有BOM的UTF-8编码。
答案 1 :(得分:1)
为什么要将文本HTML-Escaped存储在数据库中?这是用于演示,不属于您的应用程序的核心数据。将String存储在您选择的编码中(只要它一致并且可以处理您需要的所有字符,这无关紧要)并以这种方式处理数据。 Ergo:问题的核心不是数据库。
版权符号未正确显示的问题可能有多种原因。就像您发送浏览器UTF-8文字一样,但相应的Content-Type
声明您的内容属于其他编码。
涵盖此主题所有方面的帖子相当广泛,但您可以在网上找到好的文档。
尽管如此,如果您坚持存储HTML-Escaped数据:string.replace("\u00a9", "©");
答案 2 :(得分:0)