我正在编写一个ColdFusion程序,它使用cfquery
从AS/400 iSeries表中获取数据,然后将该数据输出到网页。有时候数据是中文的,但不会正确输出中文字符。使用ColdFusion从AS/400服务器显示中文字符
我建下面的测试查询,
<cfprocessingdirective pageEncoding="UTF-8" />
<cfquery name="Test" Datasource = "AS400">
select dsc1 from sales where ref = '123456'
</cfquery>
<cfoutput>#test.dsc1#</cfoutput>
结果应该是 “M5方头螺栓”,但我只得到 “M5”。我做了另一个测试运行刚:
<cfset x = "M5方头螺栓"/>
<cfoutput>#x#</cfoutput>
,并显示中国没有问题。
由于ColdFusion可以在代码中写出字符时显示字符,但不能在通过SQL获取数据时显示字符,这似乎是问题出在我的ODBC设置或我的ColdFusion服务器数据源设置上,但我对这些设置不够熟悉,不知道需要更改哪些内容才能实现此功能。
在ColdFusion管理员数据源设置下,选择您正在使用的相应数据源。然后点击“显示高级设置”按钮。这将显示一个选项“字符串格式”_启用高级ASCII字符和Unicode配置为非拉丁字符配置的数据源_。选中该数据源的框。正如Adrian指出的,数据必须存储在数据库的NVARCHAR字段中。 –
我正在使用Coldfusion 2016,我检查了我正在使用的数据源的高级设置,并且没有显示“字符串格式”或任何提及启用高字符的ASCII字符和用于非拉丁字符配置的数据源的Unicode选项的选项。 有一个选项显示: CLOB - 启用长文本检索(CLOB)。 BLOB - 启用二进制大对象检索(BLOB)。 我测试了这两个但都没有差异。 我的数据源未设置为受信任的来源,这是否会有所作为? – MHall
啊对,ODBC数据源没有这个选项。查看是否可以使用正在使用的ODBC驱动程序配置该设置。 –