Tôi đang cố gắng xác định một ký tự lạ mà tôi đã tìm thấy trong một tệp tôi đang làm việc với:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
Tệp đang sử dụng mã hóa ISO-8859 và không thể chuyển đổi thành UTF-8:
$ iconv -f ISO-8859 -t UTF-8 file
iconv: conversion from `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.
$ iconv -t UTF-8 file
iconv: illegal input sequence at position 0
$ file file
file: ISO-8859 text
Câu hỏi chính của tôi là làm thế nào tôi có thể giải thích đầu ra của od
đây? Tôi đang cố gắng sử dụng trang này cho phép tôi dịch giữa các cách biểu thị ký tự khác nhau, nhưng nó cho tôi biết rằng 005353
với tư cách là "điểm mã Hex" 卓
có vẻ không đúng và 0aeb
như "điểm mã Hex" ૫
, một lần nữa, có vẻ sai .
Vì vậy, làm thế nào tôi có thể sử dụng bất kỳ trong ba lựa chọn ( 355
, 005353
hoặc 0aeb
) để tìm ra những nhân vật mà họ có nghĩa vụ phải đại diện?
Và vâng, tôi đã thử với các công cụ Unicode nhưng dường như đó cũng không phải là một ký tự UTF hợp lệ:
$ uniprops $(cat file)
U+FFFD ‹�› \N{REPLACEMENT CHARACTER}
\pS \p{So}
All Any Assigned Common Zyyy So S Gr_Base Grapheme_Base Graph X_POSIX_Graph
GrBase Other_Symbol Print X_POSIX_Print Symbol Specials Unicode
nếu tôi hiểu mô tả về ký tự Unicode U + FFFD, thì đó hoàn toàn không phải là một ký tự mà là một trình giữ chỗ cho một ký tự bị hỏng. Điều này có ý nghĩa vì tệp không thực sự được mã hóa UTF-8.
ë
là những gì tôi thấy khi dữ liệu được sử dụng trên một chương trình khác! Nhưng làm thế nào tôi có thể biết điều này? Không phải nó ở đâu đó trong dữ liệu tôi cung cấp sao? Làm thế nào bạn tìm thấy nó? Ồ, tôi đã cố gắng iconv
với -f ISO-8859
nhưng nó phàn nàn về conversion from
tiêu chuẩn ISO-8859' không supported`.
eb
và bỏ qua 0x
chỉ báo hex hoặc bất cứ điều gì đó là. Sự thiếu hiểu biết của tôi về loại điều này là sâu sắc. Bạn có thể gửi câu trả lời giải thích rằng @StephenKitt không?
iconv
sẽ thành công; và / hoặc bạn có thể đã tra cứu nó, ví dụ như trên Wikipedia. Đối với mã hóa rất cụ thể này, fileformat.info/info/unicode/char/00eb/index.htm cũng hoạt động (Unicode tương đương với ISO-8859-1 trong phạm vi 128-255, mặc dù tất nhiên không có mã hóa UTF nào tương thích với nó ).
iconv
phàn nàn vì bạn không chỉ định bộ ký tự nguồn, do đó, nó sử dụng mặc định của bạn có lẽ là UTF-8.)