2012-07-18 25 views
8

Tôi có nguồn dữ liệu văn bản bao gồm chuỗi byte c3 82 c2 bf. Trong bối cảnh tôi nghĩ rằng nó được cho là một biểu tượng vốn Hy Lạp Phi (Φ).Mã hóa ký tự nào là c3 82 c2 bf?

Dù sao tôi không thể tìm ra mã hóa nào đang được sử dụng; Tôi đang viết một kịch bản Python để xử lý dữ liệu này vào một cơ sở dữ liệu dự kiến ​​Unicode, và nó ném một ngoại lệ về chuỗi dữ liệu cụ thể này.

Bất kỳ đề xuất nào về cách xử lý?

+1

Bạn có thể đăng thêm dữ liệu mẫu được mã hóa bằng mã hóa ma thuật không? Điều gì làm cho bạn nghĩ rằng đó là một lá thư duy nhất? – vcsjones

+0

Trong bối cảnh đó là "từ thông \ xc3 \ x82 \ xC2 \ xbf fa " mà có lẽ nên được Φ fa

+0

Đó là số liệu thất bại duy nhất cho đến nay, vì vậy tôi chỉ có mà đi vào. –

Trả lời

17

Được giải thích là UTF-8, c3 82 là “Â” U + 00C2 và c2 bf là “¿” U + 00BF, không có ý nghĩa lắm, nhưng dữ liệu UTF-8 hợp lệ về mặt kỹ thuật, vì vậy không nên được báo cáo là lỗi dữ liệu cấp ký tự. Được giải thích là UTF-16, đó là các âm tiết Hangul và có thể là một ký tự tượng hình CJK, tùy thuộc vào độ tin cậy, nhưng vẫn là dữ liệu chính thức hợp lệ, mặc dù hầu hết không có ý nghĩa gì.

Điều này nghe có vẻ giống như kết quả của chuyển đổi kép, nhưng rất khó để đưa ra các phỏng đoán được giáo dục. Nếu nó là viết tắt của Φ, thì dạng UTF-16 là 03 A6 hoặc A6 03 và dạng UTF-8 là CE A6, không thực sự giống với dữ liệu thực tế. Thông tin về nguồn gốc của dữ liệu có thể giúp đoán được việc chuyển mã nào có thể xảy ra.

+1

Dường như mã hóa U + 00BF được mã hóa kép, MARK QUESTION MARK. –

+2

@Keith Thompson, đúng vậy! Nếu bạn có U + 00BF và UTF-8 mã hóa nó, bạn sẽ nhận được byte C2 BF.Nếu bạn hiểu nhầm các byte này là U + 00C2 và U + 00BF và UTF-8 mã hóa chúng, bạn sẽ nhận được C3 82 C2 BF, như trong dữ liệu thực tế. –

+0

Nó vẫn là một vấn đề mà "¿" xuất phát từ. Tôi thường mong đợi nó sẽ là kết quả của một chuyển đổi sai khác (có thể đoán được giữa các mã hóa 8 bit), nhưng tôi không thể tưởng tượng nó là gì. –

10

Đây có thể là một chuyển đổi kép từ ký tự Ñ.

Ñ ký tự trong UTF-8 là: 0xc391.

Nếu bạn cố gắng để chuyển đổi từ LATIN-1 để UTF-8 các Ñ nhân vật mà đã được mã hóa trong UTF-8, bạn sẽ nhận được: 0xc382c2bf.

Tại sao?

  1. 0xc382UTF-8 dịch từ LATIN 1-0xc3 nhân vật à (A với dấu ngã)
  2. 0xc2bf¿ nhân vật mà là những gì bạn nhận được khi bạn không thể chuyển đổi một nhân vật từ LATIN-1 (0x91 là một ký tự không hợp lệ trong LATIN-1
+0

Cảm ơn nhưng không liên quan gì đến Ñ, đây là giấy kỹ thuật nơi Φ có ý nghĩa. –

+0

Rất có thể, rằng '(A có dấu ngã) + (lộn ngược?)' Là kết quả của _any_ vô tình chuyển đổi kép. Như vậy, sẽ không có cách nào để đảo ngược theo cách của bạn trở lại nhân vật gốc. – ashnazg

2

FWIW, tôi kết thúc bằng c3 82 c2 bf từ  . Tôi không đào sâu vào các biến đổi bởi vì tôi có thể chỉ đơn giản là ném phần mã đó đi. Đủ để nói rằng   nằm trong một mẫu email html đã được xử lý bởi một plugin wordpress (php).

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