Я работаю над проектом, который требует много символов японской катакана, хираганы и иероглифов. Исходные файлы - это файлы excel с использованием шрифта «MS P ゴ シ ッ ク». Проблема, с которой я сталкиваюсь, кажется такой же, как и у всех остальных с этим типом проблемы и C#. Решения, которые я нашел, похоже, начинаются с добавления текста в программу C#. То, что я пытаюсь сделать, это прочитать один из моих .xls или .txt файлов, которые я сделал в C#, работать с данными, используя обычные функции C#, такие как сравнение строк. Однако, когда я это делаю, замечание происходит. Написание или отображение данных дает «?» Метки. Здесь ничего нового.Написание, отображение и сохранение японских символов в C#
Я пробовал ту же идею с C++, и она отлично работает.
Проблема заключается в том, что он должен быть C#, а не C++, чтобы работать с interops для другого программного обеспечения, которое я использую.
Короче говоря, do C# (system.string) не обрабатывает unicode изначально по сравнению с C++ (c string)?
Я использую Visual Studio C++ 2008 Express и Visual Studio C# 2010 Express. Файлы одинаковые, но они работают в C++, а не в C#.
К сожалению, я не использовал английский язык некоторое время. Я пробовал различные типы, нижний - последний, но все еще «?» метки для вывода.
var reader = new StreamReader(File.OpenRead(@"C:\smallerBunShou.txt"), Encoding.UTF8);
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
listA.Add(values[0]);
// listB.Add(values[1]);
// listC.Add(values[2]);
}
int sizeOflistA = listA.Count();
//using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\WriteLines2.txt"))
var file = new StreamWriter(File.OpenWrite(@"C:\WriteLines2.txt"), Encoding.UTF8);
{
foreach (string line in listA)
{
// If the line doesn't contain the word 'Second', write the line to the file.
if (!line.Contains("Second"))
{
file.WriteLine(line);
}
}
}
Я также попробовал Encoding.Unicode и т.д. Мой компьютер является японский компьютер, программное обеспечение в основном японский. Согласно одному из ответов до сих пор, это не проблема с юникодом, японские компьютеры используют Shift-JIS, что, скорее всего, мне нужно изучить. Когда я решу это, я опубликую свое решение.
Обновление: Осмотрев немного, я нашел схему кодирования Shift-JIS.
Encoding.GetEncoding(932));
Это решило мою проблему! Спасибо @EricFalsken за то, что указали мне в правильном направлении.
C# имеет полную функциональность Unicode. Ваш вопрос действительно не имеет никакого смысла. "Ничего нового"? Что ж, для меня очень ново, что C# должен иметь проблемы с Unicode. Проблема, скорее всего, в части чтения вашего приложения. Вы должны значительно изменить свой вопрос, сообщив нам, в чем проблема, и показывая соответствующий код. –
Правильно ли отображаются символы в Excel? Вы можете установить шрифт вашей формы. Или вы можете создать SatteliteAssemblies с переводом и позволить им загружаться с помощью UICulture. .Net по умолчанию использует системный язык и шрифт для этого языка. – wonko79
Какой код вы используете для этого? –