用Java处理法语字符

我有一个页面,我搜索一个术语,它显示完美。 无论它是什么字体。

现在,当我在JSP中有几个复选框时,我检查并提交。 在这些复选框中,我有一个盒子名称,如ABC Farmacéutica Corporation

当我点击提交按钮时,我正在调用一个函数并将所有参数设置为一个表单并将提交该表单。 (我在提交之前测试了特殊字符显示的警报,并且显示良好)。

现在,来到Java端,我使用Springs Frame工作。 当我在控制器中打印该术语时,它显示为ABC Farmacéutica Corporation

请帮忙……先谢谢。

编辑:

请尝试此示例示例

 import java.net.*; class sample{ public static void main(String[] args){ try{ String aaa = "ABC Farmacéutica Corporation"; String bbb = "ABC Farmacéutica Corporation"; aaa = URLEncoder.encode(aaa, "UTF-8"); bbb = URLDecoder.decode(bbb, "UTF-8"); System.out.println("aaa "+aaa); System.out.println("bbb "+bbb); }catch(Exception e){ System.out.println(e); } } } 

我得到输出,

 aaa PiSA+Farmac%C3%A9utica+Mexicana+Corporativo bbb PiSA Farmacéutica Mexicana Corporativo 

尝试按原样打印string aaa

这是一个编码问题,并且Ã清楚地表明这是UTF-8文本被解释为ISO-Latin-1(或其表兄弟之一)。

确保顶部的JSP页面显示它使用UTF-8编码。

您将收到"ABC Farmacéutica Corporation"因为您从客户端收到的字符串是ISO-8859-1 ,您需要在对其进行URL解码之前将其转换为UTF-8 。 喜欢这个 :

 bbb = URLDecoder.decode(new String(bbb.getBytes("ISO-8859-1"), "UTF-8"), "UTF-8"); 

注意 :某些编码无法从不同的编码转换为不同的编码,而不会有数据丢失的风险。 例如,您无法将Thaï字符( TIS-620 )转换为其他编码,甚至不能转换为UTF-8 。 出于这个原因, 避免从一种编码转换到另一种编码 ,除非最终需要(即数据来自外部,第三种或专有来源等)。这只是如何从一个源转换为另一个源的解决方案, 知道源编码。

我怀疑问题在于页面上的字符编码。 确保您提交的页面和显示的页面使用相同的字符集,并确保明确设置它。 例如,如果您的服务器在Linux上运行,则默认编码将为UTF-8,但如果您在Windows上查看该页面,则它将假定(如果未指定编码)则为ISO-8859-1。 此外,当您在服务器端接收提交的文本时,服务器将在构建字符串时采用默认字符集 – 而如果您未指定编码,则您的用户可能使用了不同的编码。

据我了解,文本在控制器代码中是硬编码的,如下所示:

  ModelAndView mav = new ModelAndView("hello"); mav.addObject("message", "ABC Farmacéutica Corporation"); return mav; 

我希望这会奏效:

  ModelAndView mav = new ModelAndView("hello"); mav.addObject("message", "ABC Farmac\u00e9utica Corporation"); return mav; 

如果是这样,问题是由于Java编辑器使用的字符编码与编译器用于读取源代码的编码不匹配。

例如,如果您的编辑器将Java文件保存为UTF-8,并且您在UTF-8不是默认编码的系统上进行编译,那么您需要告诉编译器使用该编码:

 javac -cp foo.jar -encoding UTF-8 Bar.java 

处理字符数据时,您的构建脚本和IDE设置需要保持一致。

如果文本编辑器将文件保存为UTF-8,那么在hex编辑器中,é将是字节序列C3 A9 ; 在许多其他编码中,它将具有值E9 ISO-8859-1和windows-1252将编码为C3 A9 您可以在此处阅读Java源文件中的字符编码。

在文件>属性中将jsp页面的编码更改为UTF-8,然后在jsp页面的头部添加此行: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>