Từ ?Quotes
:Sự khác nhau giữa ký tự mã hex ( x) và unicode ( u) là gì?
\xnn character with given hex code (1 or 2 hex digits) \unnnn Unicode character with given code (1--4 hex digits)
Trong trường hợp các ký tự Unicode chỉ có một hoặc hai chữ số, tôi mong chờ những nhân vật này là giống nhau. Trong thực tế, một trong những ví dụ trên trang ?Quotes
giúp đỡ cho thấy:
"\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21"
## [1] "Hello World!"
"\u48\u65\u6c\u6c\u6f\u20\u57\u6f\u72\u6c\u64\u21"
## [1] "Hello World!"
Tuy nhiên, dưới Linux, khi cố gắng in một dấu hiệu pound, tôi thấy
cat("\ua3")
## £
cat("\xa3")
## �
Đó là, mã \x
hex không hiển thị chính xác. (Hành vi này vẫn tồn tại với bất kỳ ngôn ngữ nào mà tôi đã thử.) Trong Windows 7, cả hai phiên bản đều hiển thị một dấu thăng.
Nếu tôi chuyển đổi thành số nguyên và ngược lại thì dấu thăng hiển thị chính xác dưới Linux.
cat(intToUtf8(utf8ToInt("\xa3")))
## £
Ngẫu nhiên, tính năng này không hoạt động trong Windows, kể từ utf8ToInt("\xa3")
trả về NA
.
Một số \x
ký tự trả lại NA
trong Windows nhưng lại ném lỗi dưới Linux. Ví dụ:
utf8ToInt("\xf0")
## Error in utf8ToInt("\xf0") : invalid UTF-8 string
("\uf0"
là một nhân vật có giá trị.)
Những ví dụ này cho thấy có một số khác biệt giữa \x
và \u
hình thức của các nhân vật, mà dường như là hệ điều hành cụ thể, nhưng tôi có thể' t thấy bất kỳ logic trong cách chúng được xác định.
Sự khác nhau giữa hai dạng ký tự này là gì?
Đó là C# nhưng nó có thể giúp bạn vì nó là cùng một câu hỏi: http://stackoverflow.com/questions/32175482/what-is-the-difference-between-using -u-và-x-while-represent-character-lite – etienne
@etienne Tôi sẽ không ngạc nhiên nếu một câu trả lời chi tiết về wiki từ Richie mình sẽ theo sau. –
@DavidArenburg: nah, anh ấy vừa tweet câu hỏi này, vì vậy anh ta phải bị bối rối. :) –