BBS水木清华站∶精华区

发信人: stable (xixi), 信区: Linux        
标  题: TurboLinux 4.02中文化初探(2) 
发信站: BBS 水木清华站 (Sat Dec 25 22:32:39 1999) 
 
2. 安装locale 
   locale在中文化方面的作用极大, 但似乎没有引起足够的重视, 
   TLC 4.02对 locale 的支持, 包括GBK/Big5 locale, 全面支持NLS 
   及I18N. 
   主要是localedata-zh-0.05-4.noarch.rpm, 将这个包装上,理论上 
   就可以使用locale了. 
   老于(yumj)(不是那个玉米糊,:P)写了个程序可以用来测试locale是否正常 
#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
char *string = "测试Locale的软件!"; 
void main() 

    int i, l, length; 
    char *ptr; 
    char cbuf[128]; 
    wchar_t wcbuf[128]; 
    setlocale(LC_ALL, ""); 
    /* MB_CUR_MAX check */ 
    printf("MB_CUR_MAX %d\n", MB_CUR_MAX); 
    length = strlen(string); 
    printf("string %s, length %d\n", string, length); 
    /* mbstowcs() */ 
    l = mbstowcs(wcbuf, string, 128); 
    printf("mbstowcs() -> num %d,", l); 
    for (i = 0; i < l; i++) { 
 printf(" %x", wcbuf[i]); 
    } 
    printf("\n"); 
    /* wcstombs() */ 
    l = wcstombs(cbuf, wcbuf, 128); 
    printf("wcstombs() -> length %d, %s\n", l, cbuf); 
    /* mblen() check */ 
    for (ptr = string; *ptr; ) { 
 l = mblen(ptr, length); 
 mbtowc(wcbuf, ptr, length); 
 printf("ptr %s, mblen %d, wchar %x\n", ptr, l, wcbuf[0]); 
 if (l <= 0) { 
     break; 
 } 
 ptr += l; 
    } 

//end 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.138.50] 

BBS水木清华站∶精华区