漢字処理

  SHIFT JIS --> JIS



  
//***********************************************
// shift_jis --> jis
//***********************************************
char *SjisToJis( char *strBuff )
{
	unsigned char Kanji[2];

	Kanji[0] = *strBuff;
	Kanji[1] = *(strBuff+1);
	
	if ( Kanji[0] <= 0x9f ) {
		Kanji[0]	= Kanji[0] - 0x71;
	}
	else {
		Kanji[0]	= Kanji[0] - 0xb1;
	}

	Kanji[0] = Kanji[0] * 2 + 1;

	if ( Kanji[1]  > 0x7f ) {
		Kanji[1]	= Kanji[1] - 1;
	}

	if ( Kanji[1] >= 0x9e ) {
		Kanji[1]	= Kanji[1] - 0x7d;
		Kanji[0]	= Kanji[0] + 1;
	}
	else {
		Kanji[1]	= Kanji[1] - 0x1f;
	}

	*strBuff		= Kanji[0];
	*(strBuff+1)	= Kanji[1];

	return strBuff;

}
  



  文字列内の SHIFT JIS --> JIS ( シフトイン・シフトアウトは1種類 )



  
//***************************************************
// shift_jis string --> jis string
//***************************************************
void StringToJis( char *strInBuff, char *strOutBuff )
{
	BOOL bFlg;

	bFlg = false;

	while ( *strInBuff != 0x00 ) {
		if ( IsDBCSLeadByte( *strInBuff ) == 0 ) {	// 1バイト文字
			if ( bFlg || *strInBuff == 0x0d ) {
				bFlg		= false;
				*strOutBuff	= 0x1b;
				*(strOutBuff+1)	= '(';
				*(strOutBuff+2)	= 'B';
				strOutBuff += 3;
			}
			*strOutBuff = *strInBuff;
			strOutBuff++;
		}
		else {
			if ( !bFlg ) {
				bFlg		= true;
				*strOutBuff	= 0x1b;
				*(strOutBuff+1)	= '$';
				*(strOutBuff+2)	= 'B';

				strOutBuff += 3;
			}

			*strOutBuff	= *strInBuff;
			*(strOutBuff+1)	= *(strInBuff+1);
			SjisToJis( strOutBuff );
			strOutBuff += 2;

		}
		strInBuff = CharNext( strInBuff );
	}
	*strOutBuff = 0x00;

}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ