لماذا أحصل على هذا الخطأ عندما أحاول طباعة شيء في المعجون؟

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

سؤال

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)

وأنا تحميل موقع على شبكة الانترنت ومن ثم طباعة محتوياته ... بسيطة. هل يجب علي صياغته بطريقة أو بأخرى؟

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

المحلول

وحاول UTF-8 البداية. الموقع الذي قد يكون تحميل محارف مختلفة من ANSI وتلك الأحرف الزائدة لا يمكن أن تكون مطبوعة على وحدة التحكم.

وهكذا في المكان الذي تفعله print text لا print text.encode('utf-8') بدلا من ذلك.

نصائح أخرى

تأكد من لديك المعجون تهيئتها لقبول البيانات UTF-8 المشفرة.

وprinting الأشياء إلى الإخراج القياسي يمكن أن يكون مشكلة، لأن بيثون في كثير من الأحيان لا يعرف ما ترميز الأحرف النظام يستخدم. في مواجهة هذا بايثون 2 يفترض معظم اختيار المحافظين، ASCII الولايات المتحدة. وذلك عند محاولة طباعة سلسلة يحتوي على أحرف التي ليست في ASCII، مثل U + 2019 الذكية الاقتباس، فهو يوفر لك هذا الخطأ.

في بيثون 3 محارف تخمين الافتراضي لsys.stdout.encoding هو UTF-8. إذا كنت متأكدا من أن الإخراج القياسي الخاص بك (. أي المعجون في قضيتك) يجب أن يقبل UTF-8، ثم نعم يمكنك تشفير صراحة:

print content.encode('UTF-8')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top