لماذا السلسلة "¿" الحصول على ترجمتها إلى "¿" عندما يدعو .getBytes ()

StackOverflow https://stackoverflow.com/questions/176084

  •  05-07-2019
  •  | 
  •  

سؤال

عند كتابة السلسلة "¿" خارج باستخدام

System.out.println(new String("¿".getBytes("UTF-8")));

وهو مكتوب ¿ بدلا من مجرد ¿.

لماذا؟ وكيف يمكننا إصلاحه؟

هل كانت مفيدة؟

المحلول

وليس لديك لاستخدام UTF-16 إلى حل هذه:

new String("¿".getBytes("UTF-8"), "UTF-8");

ويعمل على ما يرام. طالما الترميز نظرا لطريقة getBytes() هو نفس الترميز التي تمرر إلى منشئ سلسلة، يجب أن يكون على ما يرام!

نصائح أخرى

وتحتاج إلى تحديد محارف في منشئ سلسلة (انظر في مستندات API ).

وجرب:

System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));

وتحتاج إلى تحديد الترميز على حد سواء عند تحويل السلسلة إلى بايت وعند تحويل بايت إلى سلسلة.

ويبدو وكأنه وحدة النظام ليس في UTF-8

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top