2015-07-04 65 views
1

我們的網絡應用程序使用定製的IronPython腳本(IronPython版本爲2.7.3)爲什麼字符串對象的IronPython str()會引發UnicodeEncodeError?

腳本中的某個對象在一個點處轉換爲字符串。這絕對是一個字符串。它由我們的應用程序提供,其價值來自外部系統。 該引發異常的行是:

return str(customField.Value) 

其中customField.Value是我已描述對象(customField.Value是對象類型)。

該對象是一個字符串,因爲customField是文本類型(來自我們的應用程序的一種類型),我可以取出其值,它看起來像一個標準英文字符串,並且沒有超出ASCII範圍的字符。

異常記錄(後由我們的記錄處理)爲:

Error on uploading case data: ('unknown', '\x00', 0, 1, '') 
['Equals', 'GetHashCode', 'GetType', 'InitializeFromClr', 'Item', 'MemberwiseClone', 
'ReferenceEquals', 'ToString', '__class__', '__delattr__', '__dict__', '__doc__', 
'__format__', '__getattribute__', '__getitem__', '__getslice__', '__hash__', '__init__', 
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', 
'__sizeof__', '__str__', '__subclasshook__', '__unicode__', 'args', 'clsException', 
'encoding', 'end', 'message', 'object', 'reason', 'start'] 
message: --- --- 
args: --- ('unknown', '\x00', 0, 1, '') --- 
CLR Exception: --- System.Text.EncoderFallbackException --- 
Error located in on line 531 in function 
Error located in on line 410 in function packData... 

這究竟是爲什麼? 我該如何解決這個異常,以及修改腳本的正確方法是什麼?

+0

任何一個https://en.wikipedia.org/wiki/Null_character的機會呢? (這是當我搜索「\ x00」時出現的) – NightShadeQueen

+0

我該如何解決這個問題?我不知道爲什麼它會爲許多值工作,但只有少數人失敗,所有都來自手動輸入?你有什麼建議如何解決這個問題? –

+0

該源實際上是手動導入,然後該字符串通過c#代碼獲取,並且也獲取到IronPython –

回答

2

解決: STR()施加的STR對象,它是一個Unicode字符串,與字符出來ASCII範圍的上,拋出異常描述

我的一個解決方案是代替STR()使用下面的方法:

def safeStringConversion(obj): 
    if isinstance(obj, str): 
     return obj 
    else: 
     return str(obj) 

與此,Unicode字符串已經在保存表單傳遞througout應用

相關問題