通过SQL查询将日语字符串写入文本文件

时间:2018-04-09 11:35:27

标签: sql-server

我有一个要求,我需要将存储在表中的日语字符串写入文本文件。 我试过下面的查询,它只打印文本文件中的问号。

DECLARE @cmd NVARCHAR(2000), @Msg NVARCHAR(1000);
SELECT @Msg=String FROM JapaneseStringTable;
SET @cmd='echo '+@Msg+'>>'+'C:\Data\Test.txt';
EXEC sys.xp_cmdshell @cmd;

我试图硬编码日文字符串并写入文件,但仍然没有运气

DECLARE @cmd NVARCHAR(2000),
@Msg NVARCHAR(1000)=N'データノード';
SET @cmd='echo '+@Msg+'>>'+'C:\Data\Test.txt';
EXEC sys.xp_cmdshell @cmd;  

1 个答案:

答案 0 :(得分:0)

这是因为您的操作系统与日语不同code page。因此,您的问题与传递日语字符串的SQL Server无关,而与操作此字符串为ASCII的操作系统无关。

要获得正确的结果,您应该更改OS代码页。

您可以直接从cmd:

使用命令向自己证明
echo データノード >> C:\Data\Test.txt

这会给你?????

如果您首先在同一个cmd窗口中更改代码页:

chcp 936 

然后执行echo データノード >> C:\Data\Test.txt

输出文件将具有正确的ascii代码。

如果仍然无法正确查看它们,请使用Word查看此文件,但至少不会丢失任何字符(?????),ascii代码将是正确的。