cách tốt nhất để chuyển đổi tệp UTF-16 sang UTF-8 là gì? Tôi cần phải sử dụng điều này trong một kịch bản cmd.Chuyển đổi UTF-16 sang UTF-8 (để viết mã trong Windows)
Trả lời
Có công cụ GNU recode mà bạn cũng có thể sử dụng trên Windows. Ví dụ:
recode utf16..utf8 text.txt
Chắc chắn, cách cách dễ nhất là tải tập lệnh vào notepad, sau đó lưu lại tập lệnh bằng mã hóa UTF-8. Đó là một lựa chọn trong hộp thoại Save As ..
Chúc mừng, tôi có thể sử dụng nó như một cách giải quyết, nhưng kịch bản của tôi cần phải làm chuyển đổi này, tôi không thể chuyển đổi tất cả các file bằng tay .... – Grzenio
Mặc dù nó không thực sự trả lời câu hỏi vì nó doesn 't làm việc trong một kịch bản, nó chắc chắn giải quyết vấn đề của tôi! Cảm ơn – davidreedernst
Nếu bạn đã cài đặt một bản phân phối ruby, bạn có thể gọi một kịch bản ruby chăm sóc của chuyển đổi:
Ruby script to convert file(s) character encoding
Với tinh thần tương tự: Perl script
trong trường hợp không hỗ trợ kịch bản, bạn sẽ phải mã nó như C++ source này sử dụng một WideCharToMultiByte() gọi ...
một thay thế cho Ruby sẽ được để viết một Chương trình .NET nhỏ trong C# (.NET 1.0 sẽ ổn, mặc dù 2.0 sẽ đơn giản hơn :) - đó là một đoạn mã khá nhỏ. Bạn có hy vọng làm điều đó mà không có bất kỳ ứng dụng nào khác không? Nếu bạn muốn có một chút mã để làm điều đó, thêm nhận xét và tôi sẽ điền vào các câu trả lời ...
EDIT: Được rồi, đây là không có bất kỳ loại kiểm tra lỗi, nhưng ...
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);
}
}
}
Có lẽ với iconv?
Phiên bản Windows 'recode' có thể được tải xuống như một phần của gói 'tiện ích GNU cho Win32' từ sourceforge: http://downloads.sourceforge.net/unxutils/UnxUtils.zip?modtime=1172730504&big_mirror=0 – msanders
Lưu ý ngắn - điều này cũng hoạt động trên ubuntu linux với một apt-get install recode. Tiện dụng. –