UTF-8与cfprocessingdirective

今天用DW 8编写了一个包含中文CFML页面,保存为UTF-8,结果在CF7上运行出现乱码。用记事本保存为UTF-8,居然显示正常。怪了,什么时候Adobe与MS走得近了?看来是DW 8的问题了。这里提供另一种再好的方法:在页面head加即可。我索性学习了一下cfprocessingdirective标记,特总结了一下,仅供参考。

1. 功能:表明当前页面的编码方式和是否去掉标记之间的空格。

2. 历史:CF6开始使用,CF5中是作为一个常数使用

3. 属性

  • PageEncoding(字符串):表明当前页面的编码方式,值如果不为空,则默认为当前页面的BOM( byte order mark),否则为系统默认编码。
  • suppressWhiteSpace(布尔值):表明是否去掉标记之间的空格。

4. 注意

  • cfprocessingdirective标记有4K限制,可以放在cfsetting 或 cfsilent标记中;
  • 如果将cfprocessingdirective标记导入另外一个页面,不会产生作用;
  • PageEncoding属性对整个页面都有效,不仅仅局限于body注意一个页面的。
  • 你不能为对该标签使用条件语句。因为页面一旦被编译,其PageEncoding属性不会再改变;
  • 如果多处使用cfprocessingdirective标记,必须保证其PageEncoding属性一致;
  • 如果只使用PageEncoding属性,不要关闭标记;
  • CF接受Java 平台支持的合法编码;
  • 如果页面有BOM,PageEncoding属性必须和它保持一致;
  • suppressWhiteSpace属性也可以为变量;
  • suppressWhiteSpace属性对之间的代码有效,一旦用了该属性之间必须有字符。

5.范例

<cfprocessingdirective pageencoding="utf-8" suppresswhitespace="yes"> 
    <cfset firstName="白"> 
    <cfset lastName="李"> 
    <cfset fullName=variables.firstName&" "&variables.lastName> 
    <cfoutput>my fullname is #fullName#</cfoutput> 
</cfprocessingdirective>

更正:乱码的问题不在于DW,请选择“编辑”>“参数首选”>“新建文档”,勾选包括Unicode签名(BOM)即可解决这个问题。

发表评论