首页 > 解决方案 > fw/1 - 无法在视图中显示外来字符

问题描述

我在 fw/1(框架一 4.2)中有以下主控制器默认操作,其中我定义了一些 rc 范围变量以显示在 views/main/default.cfm 中。

主文件

 function default( struct rc ) {

        rc.name="ΡΨΩΓΔ";
        rc.dupl_name="üößä";
    } 

意见/主要/default.cfm

       <cfoutput>
    <p> #rc.name# </p>
    <p> #rc.dupl_name# </p>
      </cfoutput>

最后在 layouts/default.cfm

<cfoutput><!DOCTYPE html>
    <html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>
            A Simple FW/1 Layout Template
        </title>
    </head>
    <body>
       #body# 
    </body>
    </html>
</cfoutput>

不幸的是,我收到以下输出

ΡΨΩΓΔ</p>

üößä

有什么想法可以帮助我吗?

问候

标签: luceecoldfusion-2016fw1

解决方案


因为我已经在评论中为您提供了解决方案,所以我将其作为答案发布在这里,以便其他有类似问题的人可以找到他们字符集问题的根源。

上述问题通常是字符集编码冲突的结果。例如,如果您正在读取 ISO-8859-1 编码文件并使用 UTF8 输出它,而没有正确转换(解码/编码)它们。

为了像您一样通过 web 应用程序发送字符,目前最常见的字符集编码是 UTF-8。

您需要做的就是协调字符集编码,或者至少确保以处理引擎能够正确编码和解码字符集的方式设置编码。在您的情况下,您可以做的是:

  1. 验证模板 .cfm 文件的编码并确保它保存为 UTF-8
  2. 在 Lucee Administrator » Settings » Charset » Web charset 中将 UTF-8 定义为您的 Web 字符集
  3. 在 Lucee Administrator » Settings » Charset » Resource charset 中将 UTF-8 定义为您的资源字符集。
  4. 确保没有错误设置字符集编码的其他地方,例如“content-type: text/html;charset...”的 http 服务器响应标头或带有 charset 指令的 html 元标记。
  5. 如果您有其他类型的资源,例如数据库,那么您可能还需要检查这些资源(连接和数据库/表设置)。

注意:该字符集并不总是必须是 UTF-8(UTF-8 可能对某些字符使用多个字节)。在某些用例中,您可能会使用单字节编码(例如 ISO-8559-1)获得相同的结果,这也需要更少的计算资源和更少的有效负载。

我希望这可以帮助其他有类似问题的人。


推荐阅读