【问题标题】:ColdFusion: convert accented regional characters to plain ASCIIColdFusion:将重音区域字符转换为纯 ASCII
【发布时间】:2012-04-13 03:59:54
【问题描述】:

我需要将法语、瑞典语和其他语言的字符转换为“正常”的标准 ASCII 格式。

我不知道怎么解释,这里举个例子:

  • ç -> c
  • ò -> o

...

在 bash Unix 中,我会使用 iconv。在 ColdFusion9 / Java 中我该怎么做?

【问题讨论】:

标签: utf-8 coldfusion character-encoding iconv diacritics


【解决方案1】:

我在CFLib.org找到了这个简单的UDF:

deAccent

<cfscript>
/**
 * Replaces accented characters with their non accented closest equivalents.
 * 
 * @return Returns a string. 
 * @author Rachel Lehman (raelehman@gmail.com) 
 * @version 1, November 15, 2010 
 */
function deAccent(str){
    var newstr = "";
    var list1 = "á,é,í,ó,ú,ý,à,è,ì,ò,ù,â,ê,î,ô,û,ã,ñ,õ,ä,ë,ï,ö,ü,ÿ,À,È,Ì,Ò,Ù,Á,É,Í,Ó,Ú,Ý,Â,Ê,Î,Ô,Û,Ã,Ñ,Õ,Ä,Ë,Ï,Ö,Ü,x";
    var list2 = "a,e,i,o,y,u,a,e,i,o,u,a,e,i,o,u,a,n,o,a,e,i,o,u,y,A,E,I,O,U,A,E,I,O,U,Y,A,E,I,O,U,A,N,O,A,E,I,O,U,Y";

    newstr = ReplaceList(str,list1,list2);
    return newstr;
}
</cfscript>

【讨论】:

  • 显然你可以添加任何你需要的字符。 ColdFusion 中没有任何原生功能可以进行这种转换。您也许可以在底层 Java 中使用某些东西(请参阅Sergii's comment)。
【解决方案2】:

您还可以使用 CF 内置的 charsetEncode 函数。

encodedString = charsetEncode(stringToBeConverted, "utf-8");

【讨论】:

  • 我尝试了一个简单的代码示例: 但它给了我错误:CharsetEncode 函数的参数 1,现在是x,必须是有效的二进制对象。有什么遗漏吗?
猜你喜欢
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 2014-04-29
  • 2012-11-27
  • 2012-07-19
  • 2023-04-06
相关资源
最近更新 更多