2012-11-08 44 views
0

指的ISO 8859-1標準後,我結識了性格£具有價值0xa3,我想用C來顯示它,所以我寫這個程序:如何使用c顯示字符'£'?

#include <stdio.h> 

int main() 
{ 
     printf("\\xa3 is: %c.\n", '\xa3'); 
     printf("£ is: %c.\n", '£'); 

     return 0; 
} 

我保存這個源代碼文件以iso 8859-1編碼。我希望我的程序在printf符合每個%c時兩次顯示£

但是,它不工作,爲什麼?我如何修改我的程序來實現我的目標。

我正在使用linux。

編輯:

它的顯示是這樣的:

\xa3 is: �. 
£ is: �. 
+4

是您的終端設置爲ISO-8859-1? –

+3

_'但是,它不工作' - 會發生什麼?它怎麼不工作? – deanWombourne

+0

@deanWombourne,問題已更新。 –

回答

0

你需要確保輸出端的encoding你(隨機)選擇了這個字符相匹配。如果您使用的是ISO 8859-1,但您的終端正在等待UTF-8,你可能會得到一個結果,如你看到的結果。

+0

是否有與此問題有關的C語言的「運行時字符集」? –

+0

是的,有一個包含字符集的運行環境。 –

+0

+1(隨機):) – deanWombourne

2

它看起來好像您的終端運行在UTF-8而不是8859-1。試試這個:

#include <stdio.h> 

int main(void) 
{ 
    printf("\\xC2\\xA3 is: %s.\n", "\xC2\xA3"); 
    printf("£ is: %s.\n", "£"); 
    return 0; 
} 

我的Mac(其中終端在UTF-8中運行),輸出爲:

\xC2\xA3 is: £. 
£ is: £. 
+0

然後,如何改變我的終端在8859-1運行? –

+0

您在Linux下使用哪種終端仿真器?您可能在某處的某個菜單上找到屬性選項,其中一個屬性將設置爲代碼集(與正在使用的字體相關,但不同)。 –

+0

我正在使用終端0.4.8,Xfce終端仿真器,我找不到任何與編碼相關的菜單項... –

相關問題