Tôi có chương trình C# mà chúng tôi sử dụng để thay thế một số Giá trị với những người khác, được sử dụng sau khi làm tham số. Giống như 'NAME1' được thay thế bằng & 1, 'NAME2' với & 2, v.v.Đọc tập tin được mã hóa UNIX với C#
Vấn đề là dữ liệu sửa đổi nằm trên tệp văn bản được mã hóa trên UNIX và các ký tự đặc biệt như í, thậm chí trên bộ nhớ, được đọc dưới dạng hình vuông (Ký tự không hợp lệ). Các thông số kỹ thuật do tôi không thể kiểm soát được, tệp không thể thay đổi được và không có lựa chọn nào khác ngoài việc đọc nó như thế.
Tôi đã tryed để đọc với hầu hết các 130 Mã hoá C# cung cấp cho tôi với:
EncodingInfo[] info = System.Text.Encoding.GetEncodings();
string text;
for (int a = 0; a < info.Length; ++a)
{
text = File.ReadAllText(fn, info[a].GetEncoding());
File.WriteAllText(fn + a, text, info[a].GetEncoding());
}
fn là đường dẫn tập tin để đọc. Đã kiểm tra tất cả các tập tin đã tạo (như 130), không ai trong số họ viết đúng cách í vì vậy hãy không hiểu ý tưởng và không thể tìm thấy bất kỳ thứ gì trên internet.
SOLUTION:
Hình như cuối cùng mã này làm việc để có được những văn bản đúng, cũng có thể, phải sửa chữa các bộ mã hóa tương tự cho phần Viết:
System.Text.Encoding encoding = System.Text.Encoding.GetEncodings()[41].GetEncoding();
String text = File.ReadAllText(fn, encoding); // get file text
// DO ALL THE STUFF I HAD TO
File.WriteAllText(fn, text, encoding) System.Text.Encoding.GetEncodings()[115].GetEncoding(); //Latin 9 (ISO)
/* ALL THIS ENCODINGS WORKED APARENTLY FOR ME WITH ALL WEIRD CHARS I WAS ABLE TO WRITE :P
System.Text.Encoding.GetEncodings()[108].GetEncoding(); //Baltic (ISO)
System.Text.Encoding.GetEncodings()[107].GetEncoding(); //Latin 3 (ISO)
System.Text.Encoding.GetEncodings()[106].GetEncoding(); //Central European (ISO)
System.Text.Encoding.GetEncodings()[105].GetEncoding(); //Western European (ISO)
System.Text.Encoding.GetEncodings()[49].GetEncoding(); //Vietnamese (Windows)
System.Text.Encoding.GetEncodings()[45].GetEncoding(); //Turkish (Windows)
System.Text.Encoding.GetEncodings()[41].GetEncoding(); //Central European (Windows) <-- Used this one
*/
Cảm ơn bạn rất nhiều vì bạn trợ giúp
Noman (1)
Mã hóa là tệp được ghi trong? Không biết điều đó, tất cả những gì bạn phải tiếp tục là đoán. Đó là trên một máy UNIX là không thích hợp. – Oded
+1 để đoán tự động !, nhưng bây giờ bạn phải quay lại nguồn của mình để tìm hiểu, như Oded nói, 'mã hóa nào là tệp được viết?'. Chúc may mắn! – shellter
Xin lỗi vì đã nói rằng tôi không thể biết nguồn, chỉ có tôi biết là trên notepad được đánh dấu ở dưới cùng là UNIX ANSI, nó được tạo từ một con dơi sao chép [somefiles với *] myFile.txt. Tôi cho rằng hầu hết trong số họ đã được tạo từ chức năng "Lưu" từ Oracle hoặc từ tập lệnh Excel –