通过Coldfusion将非罗马字符插入SQL Server

时间:2012-05-08 15:13:02

标签: sql-server csv coldfusion character-encoding

编辑:从Sharondio修复:在cfadmin数据源高级设置中选中“ - 为非拉丁字符配置的数据源启用高位ASCII字符和Unicode”设置吗?完整路径是CFAdmin - >数据&服务 - >数据源 - >点击您的数据源 - >点击显示高级设置 - >选中上面指出的方框。

我正在尝试创建批量导入页面(在Coldfusion中),该页面将接收CSV文件并将数据插入SQL Server数据库。 CSV文件可以包含多种语言的数据,包括不使用罗马字符的语言,如中文,韩文,印地文和泰文。

当我运行导入时,任何带有非罗马字符的内容都会在SQL Server Management Studio中显示为一串问号,并且尝试在我的Coldfusion应用程序中输出数据也会显示问号。以前输入的阿拉伯数据在网站和管理工作室中正确显示,因此它看起来不像我的网站或数据库上的编码问题。

我尝试过UTF-8和UTF-16编码的CSV文件(在Excel和记事本中创建),但都没有用。我正在使用SQL Server 2000; collat​​ion设置为SQL_Latin1_General_CP1_CI_AS。我插入的列是ntext。

经过一些阅读后,我尝试修改我的insert语句,使其在插入字符串之前具有N字符(即插入table_blah(列)值(N'stuff')),但这也没有什么区别。

此时我正在寻找任何人都可以提供的任何提示或指导。谢谢。

编辑@Jake Feasel

表我正试图插入:

ID             int
Language_ID    int
Value          ntext

就我要插入的内容而言,它是以下列格式的CSV:

English    French      Chinese    Hindi    Thai      German
Course     cours       课程        कोर्स      หลักสูตร    Kurs
Student    étudiant    学生        छात्र      นักเรียน     Schüler

通过Coldfusion查询将其插入数据库(循环导入的CSV并插入相应的语言ID值和翻译的值):

<cfquery name="insert_values" datasource="#APPLICATION.DSN#">
    INSERT INTO tbl_language_value (Language_ID, Value)
    VALUES (
    <cfqueryparam cfsqltype="cf_sql_integer" value="3" />,
    <cfqueryparam cfsqltype="cf_sql_varchar" value="นักเรียน" 
    )
SELECT SCOPE_IDENTITY() AS 'New_ID';
</cfquery>

当我转储查询结果时,我可以看到查询本身正在为非罗马语言使用正确的字符,但由于某种原因,它们没有以这种方式插入到数据库中。

1 个答案:

答案 0 :(得分:0)

如果您在CF10之前使用的是ColdFusion版本,则需要在您正在使用的数据库的ColdFusion Adminintrator数据源设置中启用String format

如果您使用的是ColdFusion 10,那么您需要注意此question about the changes in ColdFusion 10的结果。