有没有人知道使用querynew()函数在ColdFusion中手动创建的查询中将值存储为NVARCHAR的方法?我有一个较大的程序的多个部分依赖于使用查询作为输入点来构建一个excel工作表(使用Ben的POI)所以有点重要我可以继续使用它作为查询来避免相对较大的重写。
当用户尝试存储VARCHAR范围之外的东西,一些日文字符等时,问题出现了。
编辑:如果这是不可能的,并且你100%肯定,我也想知道:)
答案 0 :(得分:1)
到目前为止,我唯一能想出的就是:
<cfset x = QueryNew("foobar")/>
<cfset queryAddRow(x) />
<cfset querySetCell(x, "foobar", chr(163)) />
<cfdump var="#x#">
转储时,此查询确实包含英镑符号。
我没有尝试使用Ben的POI实用程序,但希望它可以帮助你。
答案 1 :(得分:1)
您可以尝试使用JavaCast()来设置值,如下所示: Kinky Solutions (Ben Nadel) on JavaCast()
答案 2 :(得分:1)
答案 3 :(得分:1)
使用queryNew()创建ColdFusion查询时,可以将数据类型列表作为第二个参数传递。例如:
<cfset x = queryNew("foo,bar","integer,varchar") />
或者,您可以使用cf_sql_varchar(您将在queryparam标记中使用)。根据livedocs,CF varchar数据类型接受nvarchar。
QueryParam livedoc (referenced for nvarchar data type)
QueryNew livedoc (referenced for data type definition)
Managing Data Types livedoc (referenced for using cf_sql_datatype)
答案 4 :(得分:0)
这几乎是你所需要的:
<cfprocessingdirective pageEncoding="utf-8">
ColdFusion(&amp; java)默认以UTF-8存储字符串。您所需要的只是告诉CF页面的编码是UTF8。另一种方法是保存字节顺序标记(BOM),但Eclipse / CFEclipse不会这样做。