2

有谁知道使用 querynew() 函数在 ColdFusion 中手动创建的查询中将值存储为 NVARCHAR 的方法?我有一个大型程序的多个部分依赖于使用查询作为输入点来构建一个 excel 工作表(使用 Ben 的 POI),所以我可以继续将它用作查询以避免相对较大的重写,这有点重要。

当用户尝试存储超出 VARCHAR 范围的内容、一些日文字符等时,问题就出现了。

编辑:如果这是不可能的,而且你 100% 确定,我也想知道 :)

4

5 回答 5

1

到目前为止,我唯一能想到的是:

<cfset x = QueryNew("foobar")/>
<cfset queryAddRow(x) />
<cfset querySetCell(x, "foobar", chr(163)) />
<cfdump var="#x#">

转储时,此查询确实包含英镑符号。

我没有用 Ben 的 POI 实用程序尝试过这个,但希望它对你有所帮助。

于 2008-11-11T21:52:40.493 回答
1

您可以尝试使用 JavaCast() 来设置值,如下所示: JavaCast() 上的 Kinky Solutions (Ben Nadel)

于 2008-11-11T22:45:27.563 回答
1

确保您使用的是 Unicode end-to-end

于 2008-11-14T14:11:47.233 回答
1

使用 queryNew() 创建 ColdFusion 查询时,您可以传递数据类型列表作为第二个参数。例如:

<cfset x = queryNew("foo,bar","integer,varchar") />

或者,您可以使用 cf_sql_varchar(您将在 queryparam 标记中使用)。根据 livedocs,nvarchar 被接受为 CF varchar 数据类型。

QueryParam livedoc(为 nvarchar 数据类型引用)

QueryNew livedoc(数据类型定义引用)

管理数据类型 livedoc(参考使用 cf_sql_datatype)

于 2009-02-07T00:13:20.190 回答
0

这几乎就是您所需要的:

<cfprocessingdirective pageEncoding="utf-8"> 

ColdFusion (& java) 默认以 UTF-8 存储字符串。您只需告诉 CF 页面的编码是 UTF8。另一种方法是保存字节顺序标记 (BOM),但 Eclipse/CFEclipse 不这样做。

于 2009-02-11T19:09:46.497 回答