Преобразование UTF-16 в UTF-8 (для сценариев в Windows) - PullRequest
10 голосов
/ 05 ноября 2008

Каков наилучший способ конвертировать файлы UTF-16 в UTF-8? Мне нужно использовать это в сценарии cmd.

Ответы [ 6 ]

20 голосов
/ 05 ноября 2008

Существует инструмент GNU перекодирование , который вы также можете использовать в Windows. Э.Г.

recode utf16..utf8 text.txt
15 голосов
/ 05 ноября 2008

Альтернативой Ruby было бы написать небольшую программу .NET на C # (.NET 1.0 было бы неплохо, хотя 2.0 было бы проще :) - это довольно тривиальный фрагмент кода. Вы надеялись сделать это без каких-либо других приложений вообще? Если вы хотите немного кода, чтобы сделать это, добавьте комментарий, и я заполню ответ ...

EDIT: Хорошо, это без какой-либо проверки ошибок, но ...

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);
    }
  }
}
7 голосов
/ 05 ноября 2008

Возможно с iconv ?

7 голосов
/ 05 ноября 2008

Конечно, самый простой способ - загрузить скрипт в блокнот, а затем снова сохранить его в кодировке UTF-8. Это опция в диалоговом окне «Сохранить как».

1 голос
/ 05 ноября 2008

Если у вас установлен дистрибутив ruby, вы можете вызвать скрипт ruby, который позаботится о преобразовании:

Скрипт Ruby для преобразования кодировки символов файла (ов)

В том же духе: Скрипт Perl

В отсутствие поддержки сценариев вам пришлось бы кодировать его следующим образом C ++ source , используя вызов WideCharToMultiByte () ...

0 голосов
/ 23 апреля 2019

Вы можете легко сделать это с помощью встроенных командлетов PowerShell, которые вы можете вызывать из cmd:

C:\> powershell -c "Get-Content mytext.txt | Set-Content -Encoding utf8 mytext_utf8.txt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...