Tôi đang ở trong ấn tượng rằng trình thông dịch JavaScript giả định rằng mã nguồn mà nó đang diễn giải đã được chuẩn hóa. Gì, chính xác hóa việc bình thường hóa? Nó không thể là trình soạn thảo văn bản, nếu không thì biểu diễn thô sơ của nguồn sẽ thay đổi. Có một số "preprocessor" mà không bình thường hóa?JavaScript chuẩn hóa Unicode
Trả lời
Không, không có tính năng Unicode chuẩn hóa được sử dụng tự động trên — hoặc thậm chí có sẵn cho-JavaScript theo ECMAScript 5. Tất cả các ký tự vẫn không thay đổi như các điểm mã ban đầu của chúng, có khả năng ở dạng không bình thường.
ví dụ thử:
<script type="text/javascript">
var a= 'café'; // caf\u00E9
var b= 'café'; // cafe\u0301
alert(a+' '+a.length); // café 4
alert(b+' '+b.length); // café 5
alert(a==b); // false
</script>
Cập nhật:ECMAScript 6 will introduce Unicode normalization for JavaScript strings.
Cần chỉ ra rằng JavaScript * PREDATES * UTF-16 và thực sự hiển thị UCS-2. (Những gì nó sử dụng trong nội bộ có thể hoặc có thể không được UTF-16, nhưng nó đá UCS-2 ra.) –
Nếu bạn đang sử dụng node.js
, có một thư viện unorm
cho việc này.
Điều này làm việc trong chrome ít nhất là tốt – jontro
ECMAScript 6 giới thiệu String.prototype.normalize()
mà sẽ chăm sóc của Unicode bình thường cho bạn.
unorm là một chồng chéo JavaScript cho phương pháp này, do đó bạn đã có thể sử dụng String.prototype.normalize()
ngay hôm nay mặc dù không phải là một động cơ duy nhất hỗ trợ nó ngay tại thời điểm này.
Để biết thêm thông tin về cách thức và thời điểm sử dụng tính năng chuẩn hóa Unicode trong JavaScript, hãy xem JavaScript has a Unicode problem – Accounting for lookalikes.
Tôi đã cập nhật câu trả lời @ bobince 's:
var cafe4= 'caf\u00E9';
var cafe5= 'cafe\u0301';
console.log (
cafe4+' '+cafe4.length, // café 4
cafe5+' '+cafe5.length, // café 5
cafe4 === cafe5, // false
cafe4.normalize() === cafe5.normalize() // true
);
- 1. Chuẩn hóa chuỗi Unicode trong C/C++
- 2. Ruby 1.9 không hỗ trợ chuẩn hóa Unicode
- 3. Bình thường hóa Unicode
- 4. Javascript string.toLowerCase() có tuân thủ các tiêu chuẩn Unicode trong trường hợp chuyển đổi không?
- 5. Làm thế nào để tránh các trình duyệt Unicode chuẩn hóa khi gửi một biểu mẫu với Unicode
- 6. Chuẩn hóa URL chuẩn - Java
- 7. Phông chữ unicode chuẩn là gì?
- 8. Có bất kỳ chuẩn mã hóa nào cho JavaScript không?
- 9. Khi nào nên sử dụng các hình thức chuẩn hóa Unicode NFC và NFD?
- 10. Base64 có được chuẩn hóa không?
- 11. Mã hóa unicode sử dụng nltk
- 12. Mã hóa ký tự Unicode Url
- 13. Python & MySql: Unicode và Mã hóa
- 14. Weka chuẩn hóa các cột
- 15. Điểm nhấn JavaScript/HTML/Unicode: á! = Á
- 16. Tìm tên ký tự Unicode với Javascript
- 17. Chuẩn hóa hoặc Không chuẩn hóa trong các trang web có lưu lượng truy cập cao
- 18. Làm thế nào để giải mã HTML unicode bằng JavaScript?
- 19. Đo điểm chuẩn/Tiểu sử JavaScript
- 20. Chuẩn hóa dòng mới trong C#
- 21. Tiêu chuẩn mã hóa mục tiêu-C?
- 22. gấu trúc: chuẩn hóa một DataFrame
- 23. noSQL và dữ liệu chuẩn hóa
- 24. Chuẩn hóa cục bộ trong OpenCV
- 25. Tài liệu chuẩn mã hóa Microsoft
- 26. Chuẩn hóa cơ sở dữ liệu
- 27. Android nhận được tăng tốc chuẩn hóa
- 28. Chức năng mã hóa URL chuẩn?
- 29. Chuẩn mã hóa và chiều dài dòng
- 30. Tiêu chuẩn mã hóa Haskell tốt
Động cơ trình duyệt Tôi tin là những gì xử lý nó. Đó là lý do tại sao bạn có sự khác biệt giữa các trình duyệt về những gì họ làm và không hỗ trợ. – Ryan