使用批处理文件运行带有中文字符的脚本会导致文本乱码

时间:2011-01-17 15:03:39

标签: sql-server database batch-file cjk

我正在使用批处理文件来运行sqlcmd(Sql server 2008),后者又运行各种sql脚本。 sql脚本将亚洲和英文字符插入数据库。我遇到的问题是 亚洲字符出现乱码(英语出来没问题。)当我手动运行中文字符脚本时,它们运行正常。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

你究竟是如何使用这些文件的?如果你现在这样做

sqlcmd ... < input.sql

然后考虑将控制台窗口的字体更改为TrueType字体或将其更改为

sqlcmd ... -i input.sql

我猜这些字符在仅支持OEM字符集的控制台中重定向时会出现乱码。

答案 1 :(得分:0)

这可能为时已晚,无法解决您的问题,但我遇到了类似的问题。我的解决方案是通过'-f'命令行参数为sqlcmd提供一个显式代码页:

sqlcmd ... -i input.sql -f 65001

65001是UTF-8的代码页。您需要确保使用此代码页实际保存文件,您可以在Visual Studio中执行此操作:

Try this:
1. Open your file in Visual Studio.
2. From the File menu, choose Advanced Save Options.
3. Select this encoding:

Unicode (UTF-8 without signature) – Codepage 65001

4. Save the file.

(引自blog post comment,它给了我足够的信息来拼凑解决方案。)