Triệu chứng
Xem xét tình huống sau:
-
Bạn tạo một dự án Visual C++ trong Microsoft Visual Studio 2008 gói dịch vụ 1 (SP1).
-
Tệp dự án đã thu hẹp chuỗi literals. Các literals chuỗi chứa các ký tự Châu á và không mục có tên "Lê"
-
Literals chuỗi sử dụng mã hoá UTF-8.
Trong trường hợp này, khi bạn biên dịch dự án literals chuỗi được misinterpreted bởi trình biên soạn. Ngoài ra, bạn gặp một trong các vấn đề sau:
-
Tập hợp tác thành công. Tuy nhiên, literals chuỗi được hiển thị không chính xác trong ứng dụng được tạo ra. Ngoài ra, bạn có thể cũng nhận được thông báo cảnh báo sau khi bạn biên dịch dự án:
cảnh báo C4566: ký tự đại diện tế tự-tên 'xx' không xuất hiện trong trang mã hiện thời.
-
Tập hợp các hoạt động không thành công. Ngoài ra, bạn có thể nhận được thông báo lỗi khi bạn biên dịch dự án:
lỗi C2078: quá nhiều initializers
Nguyên nhân
Sự cố này xảy ra bởi vì trình biên soạn giả định rằng các tập tin trong phần "Triệu chứng" có MBCS mã hoá. Vì hiện tượng này, compilerincorrectly dịch tệp.
Giải pháp
Thông tin về cập nhật nóng
Cập nhật nóng được hỗ trợ do Microsoft cung cấp. Tuy nhiên, cập nhật nóng này chỉ được dùng để khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng cập nhật nóng này cho hệ thống đang gặp sự cố cụ thể này.
Nếu cập nhật nóng này sẵn có để tải xuống thì sẽ có phần "Cập nhật nóng có sẵn để tải xuống" ở đầu bài viết Cơ sở Kiến thức này. Nếu phần này không xuất hiện, hãy gửi một yêu cầu tới bộ phận Hỗ trợ và Dịch vụ Khách hàng của Microsoft để nhận hotfix.
Lưu ý Nếu sự cố khác xảy ra hoặc nếu cần khắc phục sự cố, bạn có thể phải tạo một yêu cầu dịch vụ riêng. Chi phí hỗ trợ thông thường sẽ tính cho các câu hỏi hỗ trợ bổ sung và các sự cố không phù hợp với cập nhật nóng cụ thể này. Để có danh sách đầy đủ số điện thoại hỗ trợ và dịch vụ khách hàng của Microsoft hoặc để tạo yêu cầu dịch vụ riêng, hãy ghé thăm Trang web sau của Microsoft:
http://support.microsoft.com/contactus/?ws=supportLưu ý Mẫu "Tải xuống cập nhật nóng sẵn có" hiển thị các ngôn ngữ mà cập nhật nóng này sẵn có. Nếu bạn không thấy ngôn ngữ của mình thì đó là do cập nhật nóng này hiện không có ngôn ngữ đó.
Điều kiện tiên quyết
Bạn phải có Visual Studio 2008 gói dịch vụ 1 (SP1) được cài đặt để áp dụng hotfix này.
Yêu cầu khởi động lại
Bạn không phải khởi động lại máy tính sau khi bạn áp dụng hotfix này nếu không có phiên bản Visual Studio đang được sử dụng.
Thông tin thay thế cập nhật nóng
Hotfix này không thay thế các hotfix.
Thông tin về tệp
Phiên bản tiếng Anh của cập nhật nóng này có các thuộc tính tệp (hoặc thuộc tính tệp mới hơn) được liệt kê trong bảng sau. Ngày và giờ của các tệp này được liệt kê theo Giờ Quốc tế Phối hợp (UTC). Khi bạn xem thông tin về tệp, ngày và giờ được chuyển đổi thành giờ địa phương. Để tìm sự khác nhau giữa UTC và giờ địa phương, sử dụng tab Múi Giờ trong mục Ngày và Giờ trong Pa-nen điều khiển.
Tên tệp |
Phiên bản tệp |
Kích thước tệp |
Ngày |
Giờ |
Nền tảng |
---|---|---|---|---|---|
C1.dll |
15.0.30729.4987 |
678,720 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,204,488 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,215,240 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,339,656 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,505,552 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,891,592 |
09-Mar-2010 |
10:18 |
x64 |
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Thông tin
Để khắc phục lỗi trong trình biên soạn, cài đặt hotfix này và sau đó lưu tệp cùng với dấu thứ tự byte. Ngoài ra, thêm "pragma" chỉ sau trước khi literals chuỗi trong tệp nguồn.
#pragma execution_character_set("utf-8")
Lưu ý "Pragma" chỉ đặt đơn vị dịch tệp nguồn cho đến khi chỉ "pragma" được thay thế bằng một "pragma" chỉ.