يونيكودينكوديرور:'أسي' الترميز لا يمكن ترميز الأحرف بسبب N ن من قاعدة البيانات

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

سؤال

لدي حقل للحصول عليه من قاعدة البيانات التي تحتوي على سلسلة مع هذا الجزء-ن وأثناء الحصول على هذا أحصل على خطأ:

"يونيكودينكوديررور:'أسي' الترميز لا يمكن ترميز الأحرف في موقف 12-15:ترتيبي ليس في النطاق (128)"

لقد بحثت في هذا الخطأ ، وكان هناك أشخاص آخرون يواجهون مشكلة بسبب يونيكود التي تبدأ شيئا من هذا القبيل u'\xa0, ، إلخ.لكن في حالتي ، أعتقد أنه بسبب الشخصيات الخاصة.لا يمكنني إجراء تغييرات في قاعدة البيانات لأنها ليست تحت وصولي.يمكنني فقط الوصول إليه.

الرمز هنا:(في الواقع دعوتها إلى عنوان ورل الخارجي)

req = urllib2.Request(url)
req.add_header("Content-type", "application/json")
res = urllib2.urlopen(req,timeout = 50)         #50 secs timeout
clientid = res.read()
result = json.loads(clientid)

ثم أستخدم متغير النتيجة للحصول على السلسلة المذكورة أعلاه وأحصل على خطأ في هذا السطر:

updateString +="name='"+str(result['product_name'])+"', "
هل كانت مفيدة؟

المحلول

تحتاج إلى العثور على الترميز الذي يستخدم لبياناتك قبل إدراجها في قاعدة البيانات.دعونا نفترض انها أوتف-8 لأن هذا هو الأكثر شيوعا.

في هذه الحالة سوف تحتاج إلى أوتف-8 فك بدلا من أسي فك.لم تقدم أي رمز ، لذلك أفترض أن لديك "data".decode().حاول "data".decode("utf-8"), ، وإذا تم ترميز بياناتك باستخدام هذا الترميز ، فستعمل.

نصائح أخرى

لذلك يبدو لي مثل السلسلة بالفعل يونيكود ثم.لذا قم بإزالة وظائف str() ووظائف الأجيال على هذا الخط.

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