使用 Java 在 MySQL 中保存和获取阿拉伯语



在将阿拉伯语单词保存到mysql表中时,我得到了一个以&#开头的字符串,每个块都有分号。 我使用 JSP 作为前端,在 JSP 中,我可以用阿拉伯语显示字符串,但在将字符串传递到 form:input 数据显示为一些不可读的代码。

我在解决此问题时浪费了很多时间,也许这不是问题,但是我如何将其转换为Java中的实际阿拉伯语单词?,任何建议都会有所帮助。

这是数字 HTML 实体。

数据可能源于 HTML 表单。浏览器将文本输入作为数字实体发送,因为表单不指示服务器接受该编码。假设 UTF-8:

HTML最好应该采用正确的编码 - 只是为了更好地衡量。

<!DOCTYPE html>
<html>
<meta charset="UTF-8">

表单应告知服务器接受编码,而不需要数字实体。

<form action="/action_page.php" accept-charset="UTF-8">

维修:

String s = ...
Pattern pattern = Pattern.compile("(?i)\&#((x[A-F0-9]+)|\d+);");
Matcher m = pattern.matcher(s);
StringBuffer sb = new StringBuffer();
while (m.find()) {
String code = m.group(1);
if (code.startsWith("x") || code.startsWith("X")) {
code = "0" + code;
}
int codePoint = Integer.decode(code);
m.appendReplacement(sb, "");
sb.appendCodePoint(codePoint);
}
m.appendTail(sb);
s = sb.toString();

数字实体有两种形式:以 10 为基数的&#65;和以 16 为底的&#x3F;

或者,StringEscapeUtils.unescapeHtml4 可能令人满意。

最新更新