Đây là ảnh chụp trong bóng tối và tôi xin lỗi trước nếu câu hỏi này có vẻ giống như những người ramblings của một người điên.C#, UTF-8 và mã hóa các ký tự
Là một phần của tích hợp với bên thứ ba, tôi cần mã hóa UTF8 một số thông tin chuỗi bằng C# để tôi có thể gửi nó tới máy chủ đích thông qua biểu mẫu nhiều phần. Vấn đề là họ đang từ chối một số nội dung gửi của tôi, có lẽ vì tôi không mã hóa nội dung của họ một cách chính xác.
Ngay bây giờ, tôi đang cố gắng tìm ra cách gạch ngang hoặc dấu gạch nối - Tôi không thể biết đó chỉ là bằng cách nhìn vào nó - được máy chủ đích nhận hoặc giải thích là [email protected]~S
(vâng, đó là một chuỗi gồm 5 ký tự và không phải là trình duyệt của bạn bị trục trặc). Và thật không may là tôi không có hiểu biết đầy đủ về số Encoding.UTF8.GetBytes()
để biết cách sử dụng mảng byte để bắt đầu xác định vị trí của sự cố.
Nếu ai cũng có thể cung cấp bất kỳ lời khuyên hoặc lời khuyên nào, tôi sẽ đánh giá cao điều đó. Cho đến nay người bạn duy nhất của tôi đã là MSDN, và không có nhiều người trong số đó.
CẬP NHẬT 1: Sau khi tìm hiểu thêm, tôi phát hiện sử dụng System.Web.HttpUtility.UrlEncode()
để mã hóa ký tự EM DASH ("-") sẽ mã hóa nó thành "% e2% 80% 94".
Tôi hiện đang gửi thông tin này trong một bài đăng HttpWebRequest
, với loại nội dung "application/x-www-form-urlencoded" - đây có phải là nguyên nhân gây ra sự cố không? Và nếu vậy, cách thích hợp để mã hóa một loạt các cặp tên-giá trị có giá trị nào có thể chứa các ký tự Unicode, sao cho nó sẽ được một máy chủ mong đợi một yêu cầu UTF-8 hiểu được?
Từ kết quả đó, tôi đoán bạn có thể ascii mã hóa kết quả mã hóa utf8 một dấu gạch ngang em. – Joshua
Ngay cả với mã hóa sai, rất khó có thể dịch một dấu gạch ngang 1 ký tự thành chuỗi gồm 5 ký tự. Nó có lẽ không chỉ là một vấn đề mã hóa. –
@Joshua: Tôi nghĩ bạn gần gũi với vấn đề. Tôi vừa thêm bản cập nhật vào bài đăng gốc của mình với một số thông tin khác. –