Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.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
使用PDPageContentStream/PDDocument时如何在Java中处理非ASCII字符_Java_Pdf_Jsf_Unicode_Character Encoding - Fatal编程技术网

使用PDPageContentStream/PDDocument时如何在Java中处理非ASCII字符

使用PDPageContentStream/PDDocument时如何在Java中处理非ASCII字符,java,pdf,jsf,unicode,character-encoding,Java,Pdf,Jsf,Unicode,Character Encoding,我正在使用从我的web应用程序创建PDF。web应用程序是用Java构建的,并使用JSF。它从基于web的表单中获取内容,并将内容放入PDF文档中 示例:用户在表单中填写InputExtArea(JSF标记),并将其转换为PDF。我无法处理非ASCII字符 我应该如何处理非ASCII字符,或者至少在将其放入PDF之前将其去掉。请帮我提些建议或给我点资源。谢谢 因为您在JSP上使用JSF而不是Facelets(它已经隐式地使用UTF-8),所以请执行以下步骤以避免使用平台默认字符集(通常是ISO-

我正在使用从我的web应用程序创建PDF。web应用程序是用Java构建的,并使用JSF。它从基于web的表单中获取内容,并将内容放入PDF文档中

示例:用户在表单中填写InputExtArea(JSF标记),并将其转换为PDF。我无法处理非ASCII字符


我应该如何处理非ASCII字符,或者至少在将其放入PDF之前将其去掉。请帮我提些建议或给我点资源。谢谢

因为您在JSP上使用JSF而不是Facelets(它已经隐式地使用UTF-8),所以请执行以下步骤以避免使用平台默认字符集(通常是ISO-8859-1,这是处理大多数“非ASCII”字符的错误选择):

  • 在所有JSP的顶部添加以下行:

    <%@ page pageEncoding="UTF-8" %>
    
    将其映射到
    FacesServlet
    上,如下所示:

    <filter-mapping>
        <filter-name>nameOfYourCharacterEncodingFilter</filter-name>
        <servlet-name>nameOfYourFacesServlet</servlet-name>
    </filter-mapping>
    
    
    您的字符编码筛选器的名称
    你的脸的名字
    
    这将所有JSF POST请求的请求编码设置为UTF-8

  • 这将解决JSF端的Unicode问题。我从来没有使用过PDFBox,但由于它使用的是iText,而iText应该已经支持Unicode/UTF-8,所以我认为这一部分很好。让我知道,如果它仍然没有完成上述修复

    另见:

    您知道数据是在进入web应用程序还是在进入PDF时损坏的吗?您是否尝试过为web表单和PDF生成器设置正确的编码?(此外,您的PDF是如何生成的?)数据没有损坏,但如果有人从MSWord复制内容并试图将其粘贴到文本区域,它可能会不喜欢。@Riduidel我没有尝试为web表单设置任何编码,您能建议我如何做吗?谢谢你需要更清楚地了解这个问题。数据在转换为PDF之前或之后是否已损坏?在转换为PDF之前,只需将提交的数据打印到stdout/log/console。
    <filter-mapping>
        <filter-name>nameOfYourCharacterEncodingFilter</filter-name>
        <servlet-name>nameOfYourFacesServlet</servlet-name>
    </filter-mapping>