当前位置: 首页 > 面试题库 >

特殊字符和重音字符

法和硕
2023-03-14
问题内容

我正在为法国客户做一些工作,因此需要处理带重音符号的字符。但是我遇到了很多困难,希望解决方案很简单,并且有人可以向我指出。

字符串:La Forêt pour Témoin 转换为:La For? pour T?oin

请注意,带重音符号的字符缺失- 在 ê* 后面紧跟着 t ,在 é 后面紧跟着 m *

我尝试使用StringEscapeUtils来成功转义某些字符,例如 ă 。我还构建了自己的转义功能,该功能产生相同的结果( ă 可以工作,
ê 不会)。

private String escapeChars(String string) {
    char[] chars = string.toCharArray();
    String result = "";
    for (int i = 0; i < chars.length; i++) {
        int c = chars[i];
        result += "&#" + c + ";";
    }
    return result;
}

该项目使用App Engine插件在eclipse中运行,我无法缩小问题范围是由Java,App Engine还是SQLite引起。

任何帮助表示赞赏。

编辑: 我发现仅从表单显示请求参数时,字符串格式错误。(即request.getParameter(“ string”)已包含格式错误的内容)。

我尝试了丹尼尔(Daniel)建议的元标记,但没有成功。我认为您处在正确的轨道上,html文档的标头数据如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

当重音字符被硬编码到JSP中时,它们将按预期显示。

编辑: 我也已经添加<?xml version="1.0" encoding="UTF-8"?>到页面的开头。

我非常接近解决方案。我发现,如果我从浏览器中更改页面的编码,则表单数据会正确地传递到服务器。我不知道如何使浏览器自动检测页面编码。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

解决: 我不知道如何使浏览器自动检测Java默认使用的UTF-8编码。因此,我已使用request.setCharacterEncoding(“
ISO-8859-1”)将字符编码强制为ISO-8859-1。


问题答案:

编辑:我发现仅从表单显示请求参数时,字符串格式错误。(即request.getParameter(“ string”)已包含格式错误的内容)。

这可能有三个原因:

  1. 这是一个GET请求,服务器未配置为使用UTF-8解析请求URI。目前还不清楚你正在使用的服务器,所以这里的一个Tomcat针对性的答案例如:集URIEncoding的属性HTTP连接器中/conf/server.xmlUTF-8

  2. 如果是POST请求,则需要确保servlet容器使用UTF-8编码请求主体。您可以request.setCharacterEncoding("UTF-8")事先做。

  3. 您正在向其中写入参数的控制台不支持UTF-8。目前尚不清楚您在谈论哪个控制台,因此这里以Eclipse为目标的答案为例:在“ _窗口” >“首选项”>“常规”>“工作区”>“文本文件编码”_中将其设置为UTF-8。

另请参阅

  • Unicode-如何正确获取字符?-包含对各种问题的详细解答。


 类似资料:
  • 关于字符集和替代字形 除键盘上可看到的字符之外,字体中还包括许多字符。根据字体的不同,这些字符可能包括连字、分数字、花饰字、装饰字、序数字、标题和文体替代字、上标和下标字符、变高数字和全高数字。字形是特殊形式的字符。例如,在某些字体中,大写字母 A 有几种形式可用,如花饰字或小型大写字母。 插入替代字形的方式有两种: 可以使用 “字形 ”面板来查看和插入任何字体中的字形。 可以使用 “OpenTy

  • 一些字符在 XML 中有特殊的含义,只能够通过其实体名称输入 字符 写法 缩写涵义 < &lt; less than > &gt; greater than & &amp; ampersand " &quot; quote ' &apos; apostrophe 空格 &nbsp; none-break space 通常需要使用实体输入的字符包括<、&、空格   XML 会将任意数量的空格解析为一

  • 问题内容: 如何查看]`字符串中是否存在特殊字符? 问题答案: 将匹配任何非单词字符。

  • 问题内容: 我想使用SAX解析器解析xml文件中的一些数据。我的xml如下: 为了解析此数据,我扩展了DefaultHandler。 解析后的输出为: 为什么发生这种情况而不是得到: 问题答案: 我的猜测是,您将每次调用都视为交付元素的完整文本。您应该对处理程序进行编码,以便连续调用以累积文本,并且仅在事件发生时捕获它:

  • 我正在使用Apache POI读取<代码>。docx文件,并在一些操作后写入。<代码>。我使用的docx文件是法语的,但当我在它将一些法语字符转换为特殊字符。示例转换为 下面的代码用于编写文件 默认使用UTF-8。 在调试时,我在写入<代码>之前进行了检查。csv数据保持原样。但它在写作时被转换了吗?我已将默认语言环境设置为语言环境。法语 我错过了什么吗?

  • 相关网站:http://nubix.ca/blog/we-have-a-drone-and-were-prepared-to-shot/