2012-05-13 33 views
5

Cố gắng tạo trang ASP.NET đầu tiên của tôi. Có IIS 5.1 trên XP, được cấu hình để chạy .NET 4. Tạo một thư mục ảo mới và thêm một tệp .aspx. Khi tôi duyệt tệp, các ký tự không phải ASCII bị hỏng. Ví dụ, một ü (U + 00FC) được chuyển thành ü (U + 00C3 U + 00BC), là tương đương I-không-get-this-là-UTF-8 này.Tôi có cần web.config cho các ký tự không phải ASCII không?

Tôi đã thử nhiều cách khác nhau của availing này:

  1. tôi đã chắc chắn rằng các tập tin .aspx thực sự là mã hóa theo UTF-8.
  2. tôi đặt thẻ meta:

    <meta charset="UTF-8">

  3. tôi đặt thư mục ảo để xử lý .aspx như text/html;charset=utf-8 dưới HTTP Headers> File Type trong IIS.

  4. Tôi đã thêm ResponseEncoding="utf-8" đến <%@ Page ... %>.
  5. Tôi đã chèn chuỗi vào HttpUtility.HtmlEncoded(). Bây giờ ü đã được chuyển thành à ¼ (U + 00C3 U + 00BC).

Cuối cùng, tôi thấy 2 cách mà làm việc:

  1. Thay thế các ký tự ASCII với sự tham khảo nhân vật, chẳng hạn như &#252; Đây là ổn trong những năm 90, không phải hôm nay.
  2. Thêm một file web.config vào thư mục ảo, với nội dung này:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <system.web> 
        <globalization fileEncoding="utf-8"/> 
        </system.web> 
    </configuration> 
    

Without fileEncoding thiết lập, phân tích cú pháp ASP.NET sẽ đọc .aspx và tham nhũng nhân vật mỗi phi ASCII mà không cố gắng suy ra việc mã hóa tệp. Đây có phải là điều mà bạn thích đã học để sống với, hoặc tôi đang thiếu một cái gì đó? Tệp web.config có cài đặt toàn cầu hóa là cách để xử lý các ký tự "quốc tế" trên các trang .aspx không? Tôi không nhớ có vấn đề tương tự với PHP, vì vậy tôi bối rối tại sao điều này cây trồng lên với ASP.NET.

+0

tôi tìm thấy một cách khác để làm cho nó hoạt động mà không cần file web.config: Lưu trang aspx như UTF-8 với dấu thứ tự byte (BOM). Nói chung, UTF-8 không cần một BOM, vì thứ tự byte là ngầm định trong mã hóa, nhưng Microsoft có một truyền thống để yêu cầu nó, mà có lẽ là điều đúng đắn để làm, vì nó làm cho việc mã hóa tập tin nhiều hơn mạnh mẽ. Tôi đoán đây là loại giải pháp tôi đang tìm kiếm, nhưng các bình luận vẫn được chào đón. –

+0

Bạn nên xem xét việc cài đặt trình cài đặt nền tảng Microsoft Web và sử dụng IIS express 7.5 và ma trận web hoặc VS 2010 express – Aviatrix

Trả lời

3

Để sử dụng các ký tự không phải ASCII, bạn cần phải có hai thứ. Lưu các tập tin sử dụng UTF-8, bằng cách chọn mã hóa này cho các tập tin và chắc chắn rằng bạn có những cài đặt trên web.config của bạn

<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" /> 

Lưu ý rằng luôn luôn có một web.config trên ASP.NET . Có một toàn cầu mà cũng có những cài đặt và cuộc sống trong thư mục asp.net {drive:}\WINDOWS\Microsoft.NET\Framework\{version}\CONFIG\, và sau đó là web.config trên dự án của bạn. Đôi khi, cái toàn cầu đặt mã hóa từ quốc gia hiện tại. Trong trường hợp này, bạn cần phải đặt nó trở lại UTF-8 trong dự án của bạn.

Bạn đã tìm thấy tất cả những gì đã có, tôi chỉ chỉ ra 3 thiết lập:

  1. Lưu tập tin của bạn với unicode.
  2. Đặt requestEncoding = "utf-8"
  3. Đặt responseEncoding = "utf-8"
+0

điều này đã không hoạt động. sau khi tôi thêm fileEncoding nó làm việc.

+0

@ blackholeearth0_gmail Ok, tôi sẽ cập nhật câu trả lời của mình – Aristos

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