C#:使用除英语之外的语言的字典的问题

bro*_*ing 4 c# dictionary

好的,所以我基本上试图将每行包含1个单词的.txt文件的内容加载到字典中.

当这个文件中的单词是英文时,我没有遇到任何问题,但是将文件更改为带有重音的语言,我开始遇到问题.

必须在创建流阅读器时更改编码,还要在将单词添加到词典时使用ToLower方法中的文化.

基本上我现在有类似的东西:

if (!dict.ContainsKey(word.ToLower(culture)))
    dict.Add(word.ToLower(culture), true);
Run Code Online (Sandbox Code Playgroud)

问题是像"esta"和"está"这样的词被认为是相同的.那么,有没有办法将ContainsKey方法设置为特定语言,还是我们需要在类似的行中实现某些东西?无论哪种方式,我都是c#的新手,所以我想请一个例子.

另一个问题淹没了新文件...在一百个单词后,它停止添加文件的其余部分,留下一个单词不完整...但我不能在该单词中看到任何特殊的字符来结束方法的执行,任何关于这个问题的想法?

非常感谢.

编辑:使用Jon Skeet sugestion解决了第一个问题.

关于第二个问题:好的,将文件格式更改为UTF8并删除了流阅读器中的编码,因为它现在可以正确识别重音符号.现在测试关于第二个问题的一些东西.

第二个问题也解决了,这是我的一个错误......耻辱......

快速回答每个人的问题,特别是Jon Skeet.

Jon*_*eet 7

我假设你试图让词典不区分大小写.而不是调用ToLower,使用构造函数Dictionary采用相等比较器 - 并用于StringComparer.Create(culture, true)构造合适的比较器.

我不知道你的第二个问题是什么 - 我们需要更多的细节来诊断它,包括你正在使用的代码,理想情况下.

编辑:UTF-7几乎肯定不是正确的编码.不要只是猜测编码; 找出它真正意义上的东西.这个文本文件来自哪里?你能成功打开什么?

我怀疑至少你的一些问题是由于使用UTF-7.