Ошибка, которую вы видели, была специальным символом в виде двухбайтовой последовательности UTF-8, но каждый (специальный UTF-8) байт интерпретировался как однобайтовая кодировка по умолчанию, но с отсутствующим значением, следовательно, дважды ?
замена.
Следовательно:
BufferedReader stdinReader = new BufferedReader(new InputStreamReader(System.in));
String[] stdinData = readLines(stdinReader);
printToFile(stdinData, "stdin_out.txt");
Path path = Paths.get("testinput-utf8.txt");
List<String> lines = Files.readAllLines(path); // Here the default is UTF-8!
Path path = Paths.get("testinput-winlatin1.txt");
List<String> lines = Files.readAllLines(path, "Windows-1252");
Files.write(lines, Paths.get("file_out.txt"), StandardCharsets.UTF_8);
Чтобы проверить, поддерживает ли ваша текущая компьютерная система японский язык:
System.out.println("Hiragana letter Wo '\u3092'."); // Either を or ?.
Видя ?
преобразование в кодировку системы по умолчанию не смог доставить. を - это U + 3092, u-кодированный как ASCII с \ u3092.
Чтобы создать текст UTF-8 под Windows:
Files.write(Paths.get("out-utf8.txt"),
"\uFEFFHiragana letter Wo '\u3092'.".getBytes(StandardCharsets.UTF_8));
Здесь я использую уродливый (обычно ненужный) маркерный символ спецификации \uFEFF
(пробел нулевой ширины), который позволит блокноте Windows распознавать текст в UTF-8.
(Этот ответ является устаревшим, так как связанная статья была удалена в 2012. Однако StackOverflow не позволяет принятому ответу быть удаленным. Так, любезно не делайте downvote этот ответ, так как я сообщил Вам, что это является устаревшим.)
Ссылка высокого звука: https://web.archive.org/web/20111221041348/http://www.codeproject.com/kb/system/xyntservice.aspx
Источник C++ (Или использование вкладка Browse Code на статье): https://web.archive.org/web/20111228050501/http://www.codeproject.com/KB/system/xyntservice.aspx
К сожалению, загрузка исходного кода zip-файла не работает в рамках альтернативных ссылок.
Проверьте эту статью: http://www.codeproject.com/script/Articles/ArticleVersion.aspx?aid=719&av=49654
Это - действительно старая статья, но это работало в течение 8 лет, и это продолжает совершенствоваться автором.
Это сделает то, что Вы хотите сделать.
Если Вы уверены, что приложение может работать необслуживаемый безопасно (этим, я подразумеваю, что оно никогда не может подбрасывать модальный элемент UI как Окно сообщения), и ему не нужно никакое взаимодействие до завершения работы, где оно будет просто завершено, то выполненный оно как запланированная задача с триггерным набором к системе запускает.
Если это может работать необслуживаемый, но это, возможно, должно быть завершением работы и перезапущенный вручную, или это не может только быть завершено на завершении работы, затем используют XYNTService, как рекомендуется EnocNRoll. Это - ужасный взлом, но это будет работать на то, что Вы хотите.
Но безусловно лучшее решение состоит в том, чтобы разделить функциональность Вашей программы от Пользовательского интерфейса и записать надлежащий сервис. И для рабочего сервера я не позволил бы ничто больше. Если не легко отделиться затем, у Вас есть некоторые вопросы проектирования, которые необходимо изучить так или иначе.
Можно запустить приложение winforms как услуга, Вы просто не сможете видеть его - это будет отображено на так называемом виртуальном рабочем столе, который не может быть просмотрен на Вашем мониторе.
Если у Вас есть хорошая отделенная функциональность в Вас приложение форм, это должно быть просто, чтобы создать класс обслуживания с его установщиком и затем запустить Ваш класс процессора в методе OnStart обслуживания:
protected override void OnStart(string[] args)
{
Processor processor = new Processor();
Thread workerThread = new Thread(processor.OnStart);
workerThread.IsBackground = true;
try
{
workerThread.Start();
}
catch
{
//...
}
}
Можно использовать InstallUtil для установки приложения как услуга, но необходимо удостовериться, что это не уверено в GUI, и я рекомендовал бы изменить запуск приложения, таким образом, это не пытается создать любые формы.
Единственный способ даже рассмотреть это состоит в том, чтобы удостовериться, что приложение не имеет никаких элементов UI к нему, когда необходимо перейти через обручи на машину не-Vista для создания этой работы, и на Vista, Вы не можете взаимодействовать с рабочим столом вообще.
Скорее Вы были бы лучшими от рефакторинга функциональности в ряд общих библиотек и затем создали бы сервис, который пользуется теми библиотеками, и установите это в клиенте.
Найденный этой статьей под названием то, Как Создать Пользовательский Сервис.