Преобразование UTF-16 в UTF-8 (для написания сценариев в Windows)
-
06-07-2019 - |
Вопрос
каков наилучший способ конвертировать файлы в формате UTF-16 в UTF-8?Мне нужно использовать это в cmd-скрипте.
Решение
Существует инструмент GNU перекодировать , который также можно использовать в Windows. Например.
recode utf16..utf8 text.txt
Другие советы
Альтернативой Ruby было бы написать небольшую программу .NET на C # (.NET 1.0 было бы неплохо, хотя 2.0 было бы проще :) - это довольно тривиальный фрагмент кода.Вы надеялись сделать это вообще без каких-либо других приложений?Если вам нужно немного кода, чтобы сделать это, добавьте комментарий, и я введу ответ...
Редактировать:Ладно, это без какой-либо проверки на ошибки, но...
using System;
using System.IO;
using System.Text;
class FileConverter
{
static void Main(string[] args)
{
string inputFile = args[0];
string outputFile = args[1];
using (StreamReader reader = new StreamReader(inputFile, Encoding.Unicode))
{
using (StreamWriter writer = new StreamWriter(outputFile, false, Encoding.UTF8))
{
CopyContents(reader, writer);
}
}
}
static void CopyContents(TextReader input, TextWriter output)
{
char[] buffer = new char[8192];
int len;
while ((len = input.Read(buffer, 0, buffer.Length)) != 0)
{
output.Write(buffer, 0, len);
}
}
}
Конечно, самый простой способ - загрузить скрипт в блокнот, а затем снова сохранить его в кодировке UTF-8. Это опция в диалоговом окне «Сохранить как».
Возможно, с помощью iconv ? р>
Если у вас установлен дистрибутив ruby, вы можете вызвать скрипт ruby, который позаботится о конвертации:
Ruby-скрипт для конвертации кодировка символов файла (ов)
В том же духе: скрипт Perl
В отсутствие поддержки сценариев вам придется кодировать его следующим образом: исходный код C ++ с помощью вызова WideCharToMultiByte () ...
Это легко сделать с помощью встроенных командлетов PowerShell, которые можно вызывать из cmd:
C:\> powershell -c "Get-Content mytext.txt | Set-Content -Encoding utf8 mytext_utf8.txt"