Mysql coldfusion removeHtml错误地输出拉丁文本。有更好的办法吗?

Mysql coldfusion removeHtml错误地输出拉丁文本。有更好的办法吗?,mysql,coldfusion,coldfusion-9,Mysql,Coldfusion,Coldfusion 9,我有一个trim函数,它可以很好地处理英文文本,但是如果同样的函数读取带有重音的西班牙语文本等,它会删除所有的重音。有没有更好的方法来削减产量 例如,如果MySQL中的文本为“hello and good morning”,则输出良好并正确修剪,但如果my文本为“hola y buenos días”,则会修剪,但也会删除单词días中的“í” 我使用的代码是: <cfif trim(getProps.property_description) gt ""> #forma

我有一个trim函数,它可以很好地处理英文文本,但是如果同样的函数读取带有重音的西班牙语文本等,它会删除所有的重音。有没有更好的方法来削减产量

例如,如果MySQL中的文本为“hello and good morning”,则输出良好并正确修剪,但如果my文本为“hola y buenos días”,则会修剪,但也会删除单词días中的“í”

我使用的代码是:

<cfif trim(getProps.property_description) gt "">
      #formatTeaser(removeHtml(getProps.property_description),290)#… 
      [<a href="">#lang_more#</a>]
</cfif>

#FormatStrater(removeHtml(getProps.property_description),290)#…
[]
我还将此添加到代码页面,但没有任何区别:

<cfprocessingdirective pageencoding="utf-8" />


MySQL字段设置为
varchar
,当我不使用上述trim方法时,它会正确显示在其他页面上。

我相信您的问题不在于
trim()
,而在于
removeHTML()

退房。它是一个Java库,您可以在CF应用程序中使用它来选择性地从字符串中过滤任何不安全/不必要的内容


Peter Freitag在他的博客上写了一些好东西。

我终于使用了left()的增强版

你可以在这里找到它,它修剪数据没有任何问题…
ColdFusion中甚至没有
RemoveHTML()
函数

你可能从某个网站上抄袭的UDF肯定有问题。这对我很有用:

<cfscript>
function RemoveHtml(s) {
    return REReplace(s, "<[^>]+>", "", "ALL");
}
function FormatTeaser(s, i) {
    // dummy
    return s & "…";
}
</cfscript>

<cfset getProps.property_description = "<b>¡Hola y buenos días!<b>">
<cfset lang_more = "expandir">

<cfset clean_description = Trim(RemoveHtml(getProps.property_description))>
<cfif clean_description gt "">#formatTeaser(clean_description, 290)# [<a href="">#lang_more#</a>]</cfif>

函数RemoveHtml(个){
返回重新替换“]+>”、“、”全部“;
}
函数格式化程序(s,i){
//假人
返回s&“…”;
}
#FormatStrater(干净的描述,290)#[]
输出

¡Hola y buenos días!… [expandir]
“你好,布宜诺斯艾利斯!”!…[expandir]用于删除HTML的正则表达式只在某些时候起作用,这可能是剥离unicode的原因。(您是否只接受a-zA-Z0-9?)要安全地删除HTML,请使用Jsoup(),方法是将Jsoup jar放在WEB-INF/lib目录中,然后重新启动ColdFusion服务

然后创建一个Jsoup对象



就是这样,local.cleanHTML是您的清理文本。然后在上面运行其他函数。如果仍然存在问题,请向我们展示您的FormatStrater方法。

您的removeHtml和FormatStrater函数是什么样子的?如果源代码本身中有UTF-8编码的文本,您只需要
,只需标记编译器将CFM文件视为UTF-8编码。如果UTF-8编码的文本位于变量中(这只是运行时的一个考虑因素),则它对这种情况没有帮助。removeHTML不是一个内部函数,因此除非您向我们展示该代码,否则我们将无法帮助您。这可能会让您继续前进,但这并不是您实际提出的问题的答案。