2008-11-05 42 views

Trả lời

19

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 
+3

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

+1

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. –

7

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 ..

+2

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

+0

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

1

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 ...

15

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); 
    } 
    } 
} 
+0

Tôi đã hy vọng có một tiện ích tôi chỉ có thể sử dụng :) Tôi sẽ biết ơn đối với một chút mã, cổ vũ. – Grzenio

+0

FYI, đây là một tiện ích nhỏ dựa trên mã đó: [https://github.com/paulroho/ConvertToUtf8](https://github.com/paulroho/ConvertToUtf8). – paulroho

Các vấn đề liên quan