⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 johabcode2.c.svn-base

📁 hanterm-xf install file
💻 SVN-BASE
字号:
/* This file is a part of Ami software, (C) Hwang chi-deok 2001 *//*Precomposed Hangul syllables0xb0a1    => 0x8861...0xc8fe    => 0xd3b7Hangul Jamos (consonants and vowels)0xa4a1    => 0x0xa4fe    => 0xSymbols0xa1a1    => 0xd931...0xacf1    => 0xdef1*/#include <stdio.h>#include <stdlib.h>#include <iconv.h>#ifndef ICONV_CONST#define ICONV_CONST#endif#if defined(__sun__)#define CD_EUC_KR "ko_KR-euc"#define CD_JOHAB  "ko_KR-johap92"#define CD_UTF8   "ko_KR-UTF-8"#else#define CD_EUC_KR "EUC-KR"#define CD_JOHAB  "JOHAB"#define CD_UTF8   "UTF-8"#endifstatic iconv_t johab_to_wan_cd = (iconv_t) -1;static iconv_t wan_to_johab_cd = (iconv_t) -1;static iconv_t johab_to_utf8_cd = (iconv_t) -1;      intjohab_to_wansung(char *s, int johab){    size_t in_len, out_len;    char in[2];    ICONV_CONST char *in_p;    char *out_p;    if (johab < 128) {	*s = johab;	return 1;    }    if (johab_to_wan_cd == (iconv_t) -1) {	johab_to_wan_cd = iconv_open(CD_EUC_KR, CD_JOHAB);	if (johab_to_wan_cd == (iconv_t) -1) {	    perror("johab_to_wansung");	    exit(-1);	}    }    in_p = in; out_p = s;    in_len = 2; out_len = 2;    in[0] = (johab >> 8) | 0x80;    in[1] = johab & 0xff;    iconv(johab_to_wan_cd, &in_p, &in_len, &out_p, &out_len);    return 2 - out_len;}intjohab_to_wansung_str(char *s, char *johab, int len){    char *out_p = s;    ICONV_CONST char *in_p = johab;    size_t in_len = len;    size_t out_len = len;    if (johab_to_wan_cd == (iconv_t) -1) {	johab_to_wan_cd = iconv_open(CD_EUC_KR, CD_JOHAB);	if (johab_to_wan_cd == (iconv_t) -1) {	    perror("johab_to_wansung_str");	    exit(-1);	}    }    iconv(johab_to_wan_cd, &in_p, &in_len, &out_p, &out_len);    return len - in_len;}intjohab_from_wansung(char *s, int wansung){    size_t in_len, out_len;    char in[2];    ICONV_CONST char *in_p;    char *out_p;    if (wansung < 128) {	*s = wansung;	return 1;    }    if (wan_to_johab_cd == (iconv_t) -1) {	wan_to_johab_cd = iconv_open(CD_JOHAB, CD_EUC_KR);	if (wan_to_johab_cd == (iconv_t) -1) {	    perror("johab_from_wansung");	    exit(-1);	}    }    in_p = in; out_p = s;    in_len = 2; out_len = 2;    in[0] = (wansung >> 8) | 0x80;    in[1] = wansung & 0xff;    iconv(wan_to_johab_cd, &in_p, &in_len, &out_p, &out_len);    *out_p = 0;    return 2 - out_len;}intjohab_from_wansung_str(char *s, char *wansung, int len){    char *out_p = s;    ICONV_CONST char *in_p = wansung;    size_t in_len = len;    size_t out_len = len;    if (wan_to_johab_cd == (iconv_t) -1) {	wan_to_johab_cd = iconv_open(CD_JOHAB, CD_EUC_KR);	if (wan_to_johab_cd == (iconv_t) -1) {	    perror("johab_from_wansung_str");	    exit(-1);	}    }    iconv(wan_to_johab_cd, &in_p, &in_len, &out_p, &out_len);    *out_p = 0;    return len - in_len;}intjohab_to_johab(char *s, int johab){    if (johab < 128) {	*s = johab;	return 1;    }    *s++ = 0x80 | (johab >> 8);    *s = johab & 0xff;    return 2;}void johab_to_3(int johab, int *cho, int *jung, int *jong){    *cho = (johab >> 10) & 0x1f;    *jung = (johab >> 5) & 0x1f;    *jong = (johab) & 0x1f;}intjohab_from_3(int cho, int jung, int jong){    return 0x8000 | (cho << 10) | (jung << 5) | jong;}intjohab_to_utf8(char *s, int johab){    size_t in_len, out_len;    char in[2];    ICONV_CONST char *in_p;    char *out_p;    if (johab < 128) {	*s = johab;	return 1;    }    if (johab_to_utf8_cd == (iconv_t) -1) {	johab_to_utf8_cd = iconv_open(CD_UTF8, CD_JOHAB);	if (johab_to_utf8_cd == (iconv_t) -1) {	    perror("johab_to_utf8");	    exit(-1);	}    }    in_p = in; out_p = s;    in_len = 2; out_len = 3;    in[0] = (johab >> 8) | 0x80;    in[1] = johab & 0xff;    iconv(johab_to_utf8_cd, &in_p, &in_len, &out_p, &out_len);    return 3 - out_len;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -