2010-09-17 55 views
2

對於Unicode版本專家:使用D2009進行ansi轉換的OEM +

是否可以定義反映當前OEM編碼的ansistring類型?

(假設AnsiString類型沒有代碼頁標識符反映ANSI代碼頁)

這是一個笑話的問題一半,半認真:

這將簡化我的CRT單元的端口爲Unicode大大(使它不錯,鍵入)

回答

7

看起來您應該可以使用CP_OEMCP,正如您可以使用CP_ACP來獲取Ansi代碼頁一樣。

type 
    OemString = type AnsiString(CP_OEMCP); 

如果這樣不起作用,那麼聲明你的變量爲RawByteString。用它所需的數據填充它,一旦找出當前的OEM代碼頁是什麼(使用GetOEMCP),請使用SetCodePage將該代碼頁分配給字符串(儘管如此,儘管它不再是RawByteString,但儘管如此其聲明的類型)。

+0

我想聲明某些程序只接受OEM。並在必要時進行自動轉換。第一個解決方案適合這個並且被接受,第二個解決方案沒有多大意義(因爲手動轉換步驟我可能會簡單地稱爲oemtoansi並返回) – 2010-09-17 14:50:20

+0

(注意我只檢查了邏輯,我沒有真正測試它,或者多種ansistrings是可以重載的TYPE x = y型並不總是適用於此) – 2010-09-17 14:56:24

+0

額外的'type'關鍵字是否必要?如果你可以在AnsiString和Utf8String之間重載,那麼你也應該能夠基於OemString重載。 – 2010-09-17 16:11:20