Tôi đang cố gắng làm một cái gì đó mà tôi cho là khá đơn giản nhưng tôi đã dành quá nhiều thời gian cho nó rồi và tôi đã thử nhiều cách tiếp cận khác nhau mà tôi đã nghiên cứu nhưng vô ích.C# UTF8 Đọc/Xuất
Về cơ bản, tôi có một danh sách rất lớn các tên có ký tự "đặc biệt" trong chúng từ bộ ký tự UTF8.
Mục tiêu cuối cùng của tôi là đọc từng tên và sau đó thực hiện yêu cầu HTTP bằng tên đó trong URL dưới dạng biến GET. Mục tiêu đầu tiên của tôi là đọc một tên từ một tệp và đặt nó vào tiêu chuẩn để xác nhận rằng tôi có thể đọc và viết UTF8 đúng cách, trước khi tạo chuỗi và thực hiện tất cả các yêu cầu HTTP.
File test1.txt
tôi đã chứa chỉ nội dung này:
Ownage
sau đó tôi đã sử dụng mã này # C để đọc trong file. Tôi đặt mã hóa StreamReader
và Console.OutputEncoding
thành UTF8
.
static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
using (StreamReader reader = new StreamReader("test1.txt",System.Text.Encoding.UTF8))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
Console.ReadLine();
}
Nhiều bất ngờ của tôi, tôi nhận được loại đầu ra:
sản lượng dự kiến là chính xác giống như các nội dung tập tin gốc.
Làm cách nào để chắc chắn rằng các chuỗi tôi sắp xây dựng để thực hiện các yêu cầu HTTP sẽ chính xác nếu tôi thậm chí không thể thực hiện một tác vụ đơn giản như đọc/ghi các chuỗi UTF8?
+1 Điều này đúng. Ngoài ra hãy chắc chắn rằng bạn đang lưu tập tin mẫu của bạn bằng cách sử dụng UTF-8 và không ANSI đó là mặc định trong Notepad. – Yuck
Điều này, kết hợp với đề xuất của Yuck để đảm bảo rằng tôi đã chọn UTF-8 thay vì ANSI khi lưu tệp. Cảm ơn các bạn đã cứu tôi rất nhiều đau đầu tôi chắc chắn! – user17753