【发布时间】:2018-08-20 17:41:59
【问题描述】:
我正在构建(我想)一个简单的闪存卡程序来帮助我学习西班牙语。也就是说,英语到西班牙语,或翻到西班牙语到英语。我正在使用 C# 和 SQL Server。代码运行良好,除了我正在努力弄清楚如何使用西班牙语变音符号,如“á、é、í、ó、ú、ñ”。具体来说,虽然我可以使用 win10 特殊键盘将它们输入到我的 prep Excel 电子表格中,并且它们可以正确显示,但是当我将它们加载到我的 SQL Sever 数据库中并通过 VS C# Winforms 程序访问时,它们显示不正确。
我尝试使用nvarchar 而不是varchar,这只是以陌生的格式加载和显示这些字符。
我曾尝试将我的默认键盘切换为西班牙语,但这完全将我切换为西班牙语。另外,请注意,当我使用 Note++ 与它们一起工作时,它们会正确显示。
当我在 c# 中处理它们时,它们输入正确,但在使用 StreamWriter 处理时它们没有。在将 Excel .csv 数据加载到数据库之前,我会处理每个数据以添加一些额外的列。
using (StreamReader reader = new StreamReader(File.OpenRead(INFILE)))
{
using (StreamWriter writer = new StreamWriter(File.Open(OUTFILE, FileMode.Create)))
{
while ((sLineIn = reader.ReadLine()) != null) // Process each input record until no more
{
iRecIn++; // Count input records
if (bFirstRecord)
{
iRecOut++; // Account for title line
bFirstRecord = false; // Skip first record
continue;
}
sLineOut = processLineOut(sLineIn);
writeTheRecord(writer);
continue;
}
}
}
我只是不知道下一步该去哪里。谢谢!!
第 2 部分: 我的流程如下:
- 闪存卡数据输入到通用 Excel 2016 文件中。如图所示,每行一张卡。
- 我将此文件保存为 csv 文件。
- 由于我的数据库表有额外的 10 多列,我有一个单独的 c# 程序,它使用刚刚创建的 csv 文件,并通过 StreamReader/StreamWriter 进程添加剩余的列。请参阅代码 sn-p。输出文件也是一个 csv 文件。
- 我运行我的 sql server 作业,该作业使用批量插入将第 3 步的输出加载到数据库中。
- 我使用我的 c# winform flashcard 程序来刷新卡片组。
关于数据库表,column定义为: SpanWord varchar(100),
我将其从以下位置切换回来: SpanWord nvarchar(100),
因为那也不起作用.... 谢谢
第 3 部分: 我同意这太模糊了,不够简洁。我将把它分解成几个部分并处理它们中的每一个。然后继续整个过程。
我不相信我可以关闭这个问题,所以如果有人有适当的权限,请为我关闭这个......再次感谢!我有足够的工作要做。
【问题讨论】:
-
您的列是如何定义的?如在保存此数据的列中
-
StreamReader\Writer 与 SQL server 或 Excel 有什么关系?
-
好吧,我想你不会回答,检查 Northwind 示例数据库。它已经充满了那些字符。 MS SQL 服务器支持带有 NCHAR 和 NVARCHAR 的 unicode。
-
我回答了上述两个问题。谢谢
标签: c# windows winforms sql-server-2016