2014-03-19 57 views
1

我有一些西班牙字符的字符串,當我用代碼'MCT'使用U2的OCONV()函數時,它將西班牙字符更改爲其他字符。有人知道嗎?爲什麼具有'MCT'代碼的OCONV()更改原始字符串?

STRING: T r L=16 `CITáN, MOR 32000' 

TEST.MCT: 5: STR2 = OCONV(STR,'MCT') 
:: S 
TEST.MCT: 6: CRT STR2 
:: S 
Cit?9: Mor 32000 
+1

您使用的是哪個版本的U2? UniData或UniVerse?根據您提供的示例,MCT正在進行數學創建小寫字符。使用高於ASCII 128的字符時,它會翻譯不正確。請確保你的數據庫設置爲接受Unicode的,但是這可能是在MCT與上述ASCI 128 –

+0

@intl宇宙V11.1 – user1387287

回答

1

請注意,我創建了以下程序,但沒有看到問題。

CT BP SO

SO 
0001 STR = "CIT":CHAR(225):"N, MOR 3200" 
0002 STR2 = OCONV(STR, "MCT") 
0003 PRINT STR 
0004 PRINT STR2 
0005 PRINT SEQ(STR2[4,1]) 

當我編譯並運行它,我得到以下幾點:我測試UniVerse11.2.2,在Windows

CITáN, MOR 3200 
Citán, Mor 3200 
225 
> 

注意。你可以試試我從HS.SALES帳戶提供的示例代碼,並讓我知道它做了什麼?

如果仍然有問題,請讓我們知道完整的UniVerse版本,操作系統您正在運行此。

補充信息: 注意到關於AIX 6.1上的UniVerse 11.1.1測試,它爲我工作。如果您仍然遇到問題,我建議您與UniVerse維修服務提供商聯繫。

+0

字符我們用宇宙V11.1在Unix AIX版本6.1感謝的錯誤。我加入了調試器,並執行以下操作: – user1387287

+0

我們在UNIX AIX版本6.1上使用Universe V11.1感謝。我通過調試器階梯和去下列:RAID BP TEST.CH TEST.CH:1:STR = 「CIT」:CHAR(225): 「N,MOR 3200」 ::小號 TEST.CH:2: STR2 = OCONV(STR, 「MCT」) :: STR/ STRING:T R L = 16'CITáN,MOR 3200' ::小號 TEST.CH:3:CRT STR :: STR2/ STRING:T R L = 16'CitÃ6n,MOR 3200' ::小號 CITáN,MOR 3200 TEST.CH:4:CRT STR2 ::小號 相關鏈接N,莫爾3200 – user1387287

+0

TEST.CH:2:STR2 = OCONV(STR,「MCT」) :: STR/ STRING:T r L = 16'CITÃN,MOR 3200' :: S TEST.CH:3:CRT STR :: STR2/ STRING:T R L = 16'CitÃ3n,MOR 3200' ::小號 CITáN,MOR 3200 TEST.CH:4:CRT STR2 ::小號 Cit?n,Mor 3200 – user1387287

0

這是困難的,因爲它結合了線看你的輸出。

我通過RAID運行顯示正確的信息。

RAID BP SO 
SO: 1: STR = "CIT":CHAR(225):"N, MOR 3200" 
:: S 
SO: 2: STR2 = OCONV(STR, "MCT") 
:: S 
SO: 3: PRINT STR 
:: S 
CITáN, MOR 3200 
SO: 4: PRINT STR2 
:: S 
Citán, Mor 3200 
SO: 5: PRINT SEQ(STR2[4,1]) 
:: S 
225 

但是,我在我的UNIX環境變量中有LANG = en_US。

所以,有可能是基於什麼LANG設置你的環境的問題,我建議你聯繫你U2維修服務供應商。

相關問題