Преобразование UTF-16 в UTF-8 (для написания сценариев в Windows)

StackOverflow https://stackoverflow.com/questions/265370

Вопрос

каков наилучший способ конвертировать файлы в формате 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"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top