모종의 음모/Notepad22009. 5. 8. 13:22


간만에 백신을 돌려보았더니
notepad2를 실행하는 부분의 레지스트리가 바이러스로 검출이 되도록 패턴이 수정되었다.


...
어떻게 피해가야 하나 -ㅁ-?
Posted by 구차니
알파벳과 유사한것들이 있기에 VFD의 CGRAM을 이용하여 제한된 문자열 내에서
여러나라말을 지원해야 할 경우가 생겨 잠시 노가다를...

일단 A B E K H O ... 이러한 것들은 알파벳과 유사하게 생겼고,
제한된 크기인 5x7 에서 표시 할 수 없으므로(혹은 식별이 힘든 문자들이므로)
알파벳과 동일하게 사용한다면 상당히 문자의 갯수를 줄일 수 있다.

목표치는 총 64개에 러시아어를 출력할 수 있도록 맵핑을 해야 하므로
96개중 32개(대소문자 포함한다면 각 문자별 16개)의 문자를 제외하면 된다.

А В Е К М Н О Р С Т У Х Ѕ І Ј
а в е к м н о р с т у х ѕ і ј

총 30개의 알파벳과 유사하게 생긴 러시아어이다.
테이블의 총 92개의 문자중에 30개 제외 되므로 64보다 작은 62개가 된다.


iso8859 cyrillic used character
1 А 0x0410
33 а 0x0430
 


 

2 Б 0x0411
34 б 0x0431
65 Ё 0x0401
79 ё 0x0451
3 В 0x0412
35 в 0x0432
66 Ђ 0x0402
80 ђ 0x0452
4 Г 0x0413
36 г 0x0433
67 Ѓ 0x0403
81 ѓ 0x0453
5 Д 0x0414
37 д 0x0434
68 Є 0x0404
82 є 0x0454
6 Е 0x0415
38 е 0x0435
69 Ѕ 0x0405
83 ѕ 0x0455
7 Ж 0x0416
39 ж 0x0436
70 І 0x0406
84 і 0x0456
8 З 0x0417
40 з 0x0437
71 Ї 0x0407
85 ї 0x0457
9 И 0x0418
41 и 0x0438
72 Ј 0x0408
86 ј 0x0458
10 Й 0x0419
42 й 0x0439
73 Љ 0x0409
87 љ 0x0459
11 К 0x041A
43 к 0x043A
74 Њ 0x040A
88 њ 0x045A
12 Л 0x041B
44 л 0x043B
75 Ћ 0x040B
89 ћ 0x045B
13 М 0x041C
45 м 0x043C
76 Ќ 0x040C
90 ќ 0x045C
14 Н 0x041D
46 н 0x043D
 


 

15 О 0x041E
47 о 0x043E
77 Ў 0x040E
91 ў 0x045E
16 П 0x041F
48 п 0x043F
78 Џ 0x040F
92 џ 0x045F
17 Р 0x0420
49 р 0x0440







18 С 0x0421
50 с 0x0441







19 Т 0x0422
51 т 0x0442







20 У 0x0423
52 у 0x0443







21 Ф 0x0424
53 ф 0x0444







22 Х 0x0425
54 х 0x0445







23 Ц 0x0426
55 ц 0x0446







24 Ч 0x0427
56 ч 0x0447







25 Ш 0x0428
57 ш 0x0448







26 Щ 0x0429
58 щ 0x0449







27 Ъ 0x042A
59 ъ 0x044A







28 Ы 0x042B
60 ы 0x044B







29 Ь 0x042C
61 ь 0x044C







30 Э 0x042D
62 э 0x044D







31 Ю 0x042E
63 ю 0x044E







32 Я 0x042F
64 я 0x044F










Posted by 구차니
typedef struct 
{
	WORD wFormatTag;
	WORD  nChannels;
	DWORD nSamplesPerSec;
	DWORD nAvgBytesPerSec;
	WORD  nBlockAlign;
	WORD  wBitsPerSample;
	WORD  cbSize;
} WAVEFORMATEX;

wFormatTag

Waveform-audio format type. Format tags are registered with Microsoft Corporation for many compression algorithms. A complete list of format tags can be found in the Mmreg.h header file. For one- or two-channel PCM data, this value should be WAVE_FORMAT_PCM. When this structure is included in a WAVEFORMATEXTENSIBLE structure, this value must be WAVE_FORMAT_EXTENSIBLE.


nChannels

Number of channels in the waveform-audio data. Monaural data uses one channel and stereo data uses two channels.


nSamplesPerSec

Sample rate, in samples per second (hertz). If wFormatTag is WAVE_FORMAT_PCM, then common values for nSamplesPerSec are 8.0 kHz, 11.025 kHz, 22.05 kHz, and 44.1 kHz. For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.


nAvgBytesPerSec

Required average data-transfer rate, in bytes per second, for the format tag. If wFormatTag is WAVE_FORMAT_PCM, nAvgBytesPerSec should be equal to the product of nSamplesPerSec and nBlockAlign. For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.


nBlockAlign

Block alignment, in bytes. The block alignment is the minimum atomic unit of data for the wFormatTag format type. If wFormatTag is WAVE_FORMAT_PCM or WAVE_FORMAT_EXTENSIBLE, nBlockAlign must be equal to the product of nChannels and wBitsPerSample divided by 8 (bits per byte). For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.

Software must process a multiple of nBlockAlign bytes of data at a time. Data written to and read from a device must always start at the beginning of a block. For example, it is illegal to start playback of PCM data in the middle of a sample (that is, on a non-block-aligned boundary).


wBitsPerSample

Bits per sample for the wFormatTag format type. If wFormatTag is WAVE_FORMAT_PCM, then wBitsPerSample should be equal to 8 or 16. For non-PCM formats, this member must be set according to the manufacturer's specification of the format tag. If wFormatTag is WAVE_FORMAT_EXTENSIBLE, this value can be any integer multiple of 8 and represents the container size, not necessarily the sample size; for example, a 20-bit sample size is in a 24-bit container. Some compression schemes cannot define a value for wBitsPerSample, so this member can be 0.


cbSize

Size, in bytes, of extra format information appended to the end of the WAVEFORMATEX structure. This information can be used by non-PCM formats to store extra attributes for the wFormatTag. If no extra information is required by the wFormatTag, this member must be set to 0. For WAVE_FORMAT_PCM formats (and only WAVE_FORMAT_PCM formats), this member is ignored. When this structure is included in a WAVEFORMATEXTENSIBLE structure, this value must be at least 22.


Remarks

An example of a format that uses extra information is the Microsoft Adaptive Delta Pulse Code Modulation (MS-ADPCM) format. The wFormatTag for MS-ADPCM is WAVE_FORMAT_ADPCM. The cbSize member will typically be set to 32. The extra information stored for WAVE_FORMAT_ADPCM is coefficient pairs required for encoding and decoding the waveform-audio data.



[링크 : http://msdn.microsoft.com/en-us/library/ms713497(VS.85).aspx]

'모종의 음모 > noise cancelling' 카테고리의 다른 글

WAVE format  (0) 2009.08.12
Active Noise Control - ANC  (0) 2009.08.12
음속  (0) 2009.03.30
waveInOpen() waveOutOpen()  (0) 2009.03.26
sampling rate 관련 의문  (2) 2009.03.26
Posted by 구차니
소리의 속도로 항상 고정된 값이 아닌 매질의 영향을 받는다.
1기압, 0도 에서 331.5m/s 이고 1도당 0.6m/s 증가


[링크  : http://enc.daum.net/dic100/contents.do?query1=b17a2486a]




뜬금없이 이녀석이 왜 있냐면은~!
sampling시에는 샘플링이 완료 된 후 데이터가 넘겨지기 때문에,
과거 시점의 파장이 녹음되어 있게 된다. 그렇기에 빛의 속도에 근접하게 전송되는 전기신호에 의해서
처리속도, sampling 속도 등을 감안해서 어느정도 거리에서 출력을 해주는 약간의 보정이 필요 하지 않을까? 라는
생각이 들어서 찾아 본것이다. (머 그렇다고 -ㅁ-)


44050Hz(=44kHz)에서 샘플링시 1회 샘플링 할 동안 소리가 진행하는 거리

1/44050*331.5(m) = 0.0075255391600454029511918274687855m
7.5255391600454029511918274687855mm >= 7.52mm

만약
플레이시에 딜레이가 없고,
반대파장을 만들어 내는데 시간이 걸리지 않는다고 가정하고,
전기가 흐르는 속도가 무한대라서 전파속도가 0라고 가정하고,
순수하게 녹음에 대한 딜레이만 존재한다고 할 때 스피커와 마이크는 대략 1cm 정도의 간격이 필요 하다
(다르게 말하면, 변환에 필요한 시간, 신호전달 시간을 감안하면 1cm 이상의 거리를 벌려놔야지
반대파장으로 소리가 중화될 수 있을 것으로 보인다)

'모종의 음모 > noise cancelling' 카테고리의 다른 글

Active Noise Control - ANC  (0) 2009.08.12
WAVEFORMATEX structure  (0) 2009.04.01
waveInOpen() waveOutOpen()  (0) 2009.03.26
sampling rate 관련 의문  (2) 2009.03.26
wav format 관련 문서  (0) 2009.03.26
Posted by 구차니
300번째 글 기념(응?)
완전 날로먹는 Bitmap 구조 분석하기 입니다 ^^;
Visual Studio C++ 6.0 프로젝트이며, 헤더만 있다면 다른 플랫폼도 이식 가능할 듯 합니다.


알림 : 네이버 블로그 / 구차니의 잡동사니 모음에서 같은 거 있는데! 라고 하시면..
        동일 인물입니다라고 밖에 답변을 해드릴게 없습니다 -ㅁ-!

typedef struct tagBITMAPFILEHEADER
{
  WORD  bfType;
  DWORD bfSize;
  WORD  bfReserved1;
  WORD  bfReserved2;
  DWORD bfOffBits;
} BITMAPFILEHEADER,  *PBITMAPFILEHEADER;
WORD bfType;          // 위의 첫 바이트 BM 으로 Bitmap 이라는 의미를 지닌 헤더
DWORD bfSize;         // 0x00075736 = 481078 bytes, 파일 전체 크기(헤더 포함한 전체 파일)
WORD bfReserved1;  // 0x0000 으로 사용하지 않는 부분
WORD bfReserved2;  // 0x0000 으로 사용하지 않는 부분
DWORD bfOffBits;      // 현재 위치로부터 실제 데이터가 존재하는 곳 까지의 거리

bfOffBits는 약간의 설명이 필요하다. 일단 256색상 이하의 비트맵은 indexed color 방식으로
팔레트를 이용하게 된다. 팔레트 이후에는 1pixel = 1byte로 연결된 인덱스들이 나열되어 있다.
그런 이유로, 팔레트에 저장된 색상의 갯수가 다르거나, 팔레트를 사용하지 않는다면 이 값은 상당히 다른 값을 보이게 된다.
자세한 내용은 아래의 팔레트를 참고하면 된다.

typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1]; } BITMAPINFO, *PBITMAPINFO;
256 색 이하의 이미지라면, RGBQUAD는 팔레트로 사용되고,
16bit 이상의 이미지라면 이 내용에 바로 pixel별 색상이 들어간다.

typedef struct tagBITMAPINFOHEADER
{
  DWORD biSize;
  LONG  biWidth;
  LONG  biHeight;
  WORD  biPlanes;
  WORD  biBitCount;
  DWORD biCompression;
  DWORD biSizeImage;
  LONG  biXPelsPerMeter;
  LONG  biYPelsPerMeter;
  DWORD biClrUsed;
  DWORD biClrImportant;
} BITMAPINFOHEADER,  *PBITMAPINFOHEADER;
DWORD biSize;                      // BITMAPINFO 헤더의 크기
LONG  biWidth;                      // 이미지의 넓이(화면상에 보이는 크기)
LONG  biHeight;                     // 이미지의 높이(화면상에 보이는 크기)
WORD  biPlanes;                    // 이미지의 장수(bitmap은 layer가 존재하지 않으므로 항상 1)
WORD  biBitCount;                  // 한 픽셀의 컬러 비트수(256컬러는 2^8 이므로 8이 표기됨)
DWORD biCompression;          // 비트맵이 압축이 되었는지 어떠한 방식으로 압축이 되었는지 표시
DWORD biSizeImage;
LONG  biXPelsPerMeter;
LONG  biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;

typedef struct tagRGBQUAD
{
  BYTE rgbBlue;
  BYTE rgbGreen;
  BYTE rgbRed;
  BYTE rgbReserved;
} RGBQUAD;

BYTE rgbBlue;            // RGB 중 파랑(Blue)에 대한 값
BYTE rgbGreen;          // RGB 중 녹색(Green)에 대한 값
BYTE rgbRed;             // RGB 중 빨강(Red)에 대한 값
BYTE rgbReserved;     // 사용하지 않음

---------------------------------------------------------------------------------------------------
1.
bitmap은 단순하게, 하나의 pixel에 대한 RGB 정보나 index 정보를 이용하여 이미지를 표시한다.
pixelPicture Element의 약자이며, 우리가 말하는 점 하나를 의미한다.

2.
비트맵은 4사분면을 기준 좌표로 사용하며,
좌상단이 (0.0)이다. 하지만 pc에서는 1사분면을 기준 좌표로 사용하므로 우하단이 (0,0)이다.
그런 이유로, 좌표대로 출력을 하면 비트맵은 상하가 뒤집힌 채로 나오게 된다.
(다르게 말하면, 저장시에 데이터는 상하가 뒤집힌 채로 저장되어 있다)

3.
비트맵은 특정 크기의 데이터를 한번에 전송하기 위해 DMA(Direct Memory Access)나 BLIT(Bit-Block Transfer)를
사용한다. 그런 이유로 특정 블럭을 맞추어 주어야 하고, 그렇기 때문에 이미지는 byte align이나 DWORD align
사용하게 된다(DWORD = 4bytes = 64bit) 이 방법은 몇 비트 이미지냐에 따라 달라지게 되는데,
기본적으로는 4byte align을 맞춰준다.

4.
256색 미만의 비트맵은 팔레트라는 것을 사용한다. (팔레트는 RGBQUAD 구조체 사용)
이러한 팔레트는 8bit로 표현이 가능하므로, 256가지의 색상을 팔레트로 주로 사용가능하다.
예를 들어

이러한 팔레트를 만들고, 번호만으로 각 픽셀별로 색상을 지정해준다. 그렇다면 상당한 저장 공간을 아낄 수 있다.
그런 이유로, 팔레트를 사용하는 경우에는 팔레트를 Lookup(참조) 하여 변환을 해야하는 작업이 추가되게 된다.
grayscale의 경우에는 256color RGBQUAD 구조체
팔레트가 없을 경우(jpeg 변환등) for(i=0;i<256;i++) ; 을 이용하여 생성하면 된다.

5.
이유는 모르겠지만, 24bit 비트맵의 경우는 RGBQUAD가 아닌 RGBTRIPLE이라는 구조를 사용한다.

6. 정리를 하자면
1bit - RGBQUAD 팔레트 2개 / 1byte = 8 pixel / 1byte align 4byte align(2009.10.12 windows 그림판 확인)
2bit -
RGBQUAD 팔레트 4개 / 1byte = 4 pixel / 1byte align
4bit - RGBQUAD 팔레트 16개 / 1byte = 2 pixel / 1byte align
8bit - RGBQUAD 팔레트 256개 / 1byte = 1 pixel / 4byte align
16bit - RGBTRIPLE / 2byte = 1 pixel / 4byte align
24bit - RGBTRIPLE / 3byte = 1 pixel / 4byte align (width * 3)을 한뒤 align
32bit - RGBQUAD  / 4byte = 1 pixel / 4byte align 픽셀이 이미 4의 배수이므로 align 안해도 상관없음

 BITMAPFILEINFO
 http://msdn.microsoft.com/en-us/library/dd183374(VS.85).aspx
 BITMAPINFO  http://msdn.microsoft.com/ko-kr/library/dd183375(en-us,VS.85).aspx
 BITMAPINFOHEADER  http://msdn.microsoft.com/ko-kr/library/dd183376(en-us,VS.85).aspx
 RGBQUAD  http://msdn.microsoft.com/ko-kr/library/dd162938(en-us,VS.85).aspx

 BITMAPCOREINFO  http://msdn.microsoft.com/en-us/library/dd183373(VS.85).aspx
 BITMAPCOREHEADER  http://msdn.microsoft.com/en-us/library/dd183372(VS.85).aspx
 RGBTRIPLE  http://msdn.microsoft.com/en-us/library/dd162939(VS.85).aspx

'모종의 음모 > Bitmap 조작' 카테고리의 다른 글

원하는 크기안에 꼭 맞는 크기얻기  (0) 2009.06.25
Posted by 구차니
MCI 함수들을 찾다 보니 두개의 함수가 눈에 띄었다.
waveInOpen()
waveOutOpen()

MCI 함수중에 이녀석이 눈에 띈 이유는, wave를 받아오고 보내주는 장치를 열수 있을 가능성이 있어 보여서였다.
그래서 이 함수들로 검색을 해보니 조금 나오긴한다..

"소프트웨어 오디오 코덱 low-level document" 라는
유용한 문서가 발견되었는데, 출처가 불분명해서 출처를 추적해보았는데 이래저래 원본이 보이지 않는다.
아무튼 그나마 근접해 보이는 것은

볼랜드 포럼 글에서 발견한
자세한 것은 아래 "소프트웨어 오디오 코덱 low-level document"를 참조하세요.
  http://netbeta.sogang.ac.kr/%7Esuchduck/audio_low.html 라는 글인데.. 이 링크는 깨져있다..

결론은 아쉽게도 발견 실패




대충 훑어봐서 자세한 내용은 다시 읽어 봐야겠지만,
아무래도 166Mhz 시절에 쓴글이라 지금에는 어느정도 커버할 수 있을지는 몰라도,
네트워크를 통한 화상채팅에 대한 내용으로, 네트워크 전송의 부하로 인해서 어느정도 크기로 한번에 보낸다는 의미이다.
그리고 윈도우 메시지 기반으로 작동하기에, 실시간으로 하기에는 힘들지 않을까라는 생각도 든다.

'모종의 음모 > noise cancelling' 카테고리의 다른 글

WAVEFORMATEX structure  (0) 2009.04.01
음속  (0) 2009.03.30
sampling rate 관련 의문  (2) 2009.03.26
wav format 관련 문서  (0) 2009.03.26
openGL audio spectrum visualization - sndpeek  (0) 2009.03.19
Posted by 구차니
문득 22KHz로 샘플링된 wav 파일 헤더를 분석하다 의문에 빠졌다.

22KHz라면 현실세계는 1000Hz = 1KHz 니까 22000Hz가 되어야 하는데
실제로 들어 있는 값은 22050Hz 이다. 오잉?

검색해보니
11KHz는 11025Hz
22KHz는 22050Hz
44KHz는 44100Hz
란다.


이유? 모른다 -ㅁ-

Although I've mentioned the period as being the duration of one cycle of a sound wave, it is also used to describe the duration of one sample. For example, at 22kHz, the period of each sample is 1/22050s = 0.000045351 seconds (Note that 22kHz rarely equals 22000Hz. A 22kHz sound system would typically run at 22050Hz, and it is only written as 22kHz as a matter of convenience. Similarly 11kHz is 11025Hz and 44kHz is 44100Hz). This means that, every 0.00045351 seconds, the sound hardware reads a sample from the sound buffer, converts it to a voltage, and sends it to the speaker.

[참고 : http://www.iconbar.com/comments/rss/news1209.html]

An audio CD can represent frequencies up to 22.05 kHz, the Nyquist frequency of the 44.1 kHz sample rate.

[출처 : http://en.wikipedia.org/wiki/Red_Book_(audio_CD_standard)]

The audio CD has a specified bandwidth ceiling of 20kHz, leaving a small gap between that upper frequency and half the sampling rate which is 22.05kHz. The filter must be very steep (high order) to remove information above 22.05kHz but still leaving information under 20kHz. Such a filter was developed at the inception of CD playback and was named the "brickwall filter". This filter had a terrible impact on sound quality.

[출처 : http://www.simaudio.com/edu_upsampling.htm]

An audio frequency (abbreviation: AF), or audible frequency is characterized as a periodic vibration whose frequency is audible to the average human. While the range of frequencies that any individual can hear is largely related to environmental factors, the generally accepted standard range of audible frequencies is 20 to 20,000 hertz. Frequencies below 20 Hz can usually be felt rather than heard, assuming the amplitude of the vibration is high enough. Frequencies above 20,000 Hz can sometimes be sensed by young people, but high frequencies are the first to be affected by hearing loss due to age and/or prolonged exposure to very loud noises.

[출처 : http://en.wikipedia.org/wiki/Audio_frequency]


아마도.. 추측성 발언이긴 하지만,
인간의 가청주파수 영역이 20Hz ~ 20000Hz(20KHz) 인데,
다른 주파수와의 gap을 위해 약간의 간격을 더 주어서 22.05kHz를 CD의 기본 주파수로 한 것 같다.
물론 나이키스트 이론(Nyquist Theroy)에 의해서 최대 주파수의 2배로 샘플링을 해야 하므로 44.1kHz가 된 것이고 말이다.

'모종의 음모 > noise cancelling' 카테고리의 다른 글

음속  (0) 2009.03.30
waveInOpen() waveOutOpen()  (0) 2009.03.26
wav format 관련 문서  (0) 2009.03.26
openGL audio spectrum visualization - sndpeek  (0) 2009.03.19
MCI Reference  (2) 2009.03.19
Posted by 구차니

'모종의 음모 > noise cancelling' 카테고리의 다른 글

waveInOpen() waveOutOpen()  (0) 2009.03.26
sampling rate 관련 의문  (2) 2009.03.26
openGL audio spectrum visualization - sndpeek  (0) 2009.03.19
MCI Reference  (2) 2009.03.19
소음제거 프로그램  (0) 2009.03.16
Posted by 구차니


<title>R&eacute;sultats pour&nbsp;manual</title>

[출처 : http://advancedsearch.motorola.com/socialsearch/query?q=manual&qp...]



(머리에) 총 맞은 것처럼 문득 이런 생각이 들었습니다.
'아하! 프랑스어 핸드폰 메뉴얼을 보면 프랑스어 입력 방법을 알 수 있지 않을까!'

라는 전제는 맞았는데..
Oh my god!
내가 프랑스어를 전혀 모른다는 필요조건을 만족 시켜 주지 않음으로 인한 좌절 OTL 털썩

아무튼 V150 이라는 핸드폰의 메뉴얼을 보니..












먼소리여!!!! OTL


[출처 : http://www.motorola.com/Hellomoto/...]
Posted by 구차니
00220 char iso_8859_15_chars[] =
00221 {
00222       0x60, 0x27, // GRAVE ACCENT --> APOSTROPHE
00223       0xA0, 0x20, // NO-BREAK SPACE --> SPACE
00224       0xA2, 0x63, // CENT SIGN --> c
00225       0xA6, 0x53, // LATIN CAPITAL LETTER S WITH CARON --> S
00226       0xA8, 0x73, // LATIN SMALL LETTER S WITH CARON --> s
00227       0xA9, 0x43, // COPYRIGHT SIGN --> C
00228       0xAA, 0x61, // FEMININE ORDINAL INDICATOR --> a
00229       0xAB, 0x3C, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK --> <
00230       0xAC, 0x2D, // NOT SIGN --> -
00231       0xAD, 0x2D, // SOFT HYPHEN --> -
00232       0xAE, 0x52, // REGISTERED SIGN --> R
00233       0xAF, 0x2D, // MACRON --> -
00234       0xB0, 0x6F, // DEGREE SIGN --> o
00235       0xB1, 0x2B, // PLUS-MINUS SIGN --> +
00236       0xB2, 0x32, // SUPERSCRIPT TWO --> 2
00237       0xB3, 0x33, // SUPERSCRIPT THREE --> 3
00238       0xB4, 0x5A, // LATIN CAPITAL LETTER Z WITH CARON --> Z
00239       0xB5, 0x75, // MICRO SIGN --> u
00240       0xB6, 0x49, // PILCROW SIGN --> I
00241       0xB7, 0x2E, // MIDDLE DOT --> .
00242       0xB8, 0x7A, // LATIN SMALL LETTER Z WITH CARON --> z
00243       0xB9, 0x31, // SUPERSCRIPT ONE --> 1
00244       0xBA, 0x6F, // MASCULINE ORDINAL INDICATOR --> o
00245       0xBB, 0x3E, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> >
00246       0xBC, 0x4F, // LATIN CAPITAL LIGATURE OE --> O
00247       0xBD, 0x6F, // LATIN SMALL LIGATURE OE --> o
00248       0xBE, 0x59, // LATIN CAPITAL LETTER Y WITH DIAERESIS --> Y
00249       0xC0, 0x41, // LATIN CAPITAL LETTER A WITH GRAVE --> A
00250       0xC1, 0x41, // LATIN CAPITAL LETTER A WITH ACUTE --> A
00251       0xC2, 0x41, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX --> A
00252       0xC3, 0x41, // LATIN CAPITAL LETTER A WITH TILDE --> A
00253       0xC7, 0x09, // LATIN CAPITAL LETTER C WITH CEDILLA --> 0x09 (LATIN CAPITAL LETTER C WITH CEDILLA)
00254       0xC8, 0x45, // LATIN CAPITAL LETTER E WITH GRAVE --> E
00255       0xCA, 0x45, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX --> E
00256       0xCB, 0x45, // LATIN CAPITAL LETTER E WITH DIAERESIS --> E
00257       0xCC, 0x49, // LATIN CAPITAL LETTER I WITH GRAVE --> I
00258       0xCD, 0x49, // LATIN CAPITAL LETTER I WITH ACUTE --> I
00259       0xCE, 0x49, // LATIN CAPITAL LETTER I WITH CIRCUMFLEX --> I
00260       0xCF, 0x49, // LATIN CAPITAL LETTER I WITH DIAERESIS --> I
00261       0xD0, 0x44, // LATIN CAPITAL LETTER ETH --> D
00262       0xD2, 0x4F, // LATIN CAPITAL LETTER O WITH GRAVE --> O
00263       0xD3, 0x4F, // LATIN CAPITAL LETTER O WITH ACUTE --> O
00264       0xD4, 0x4F, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX --> O
00265       0xD5, 0x4F, // LATIN CAPITAL LETTER O WITH TILDE --> O
00266       0xD7, 0x78, // MULTIPLICATION SIGN --> x
00267       0xD9, 0x55, // LATIN CAPITAL LETTER U WITH GRAVE --> U
00268       0xDA, 0x55, // LATIN CAPITAL LETTER U WITH ACUTE --> U
00269       0xDB, 0x55, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX --> U
00270       0xDD, 0x59, // LATIN CAPITAL LETTER Y WITH ACUTE --> Y
00271       0xDE, 0x62, // LATIN CAPITAL LETTER THORN --> b
00272       0xE1, 0x61, // LATIN SMALL LETTER A WITH ACUTE --> a
00273       0xE2, 0x61, // LATIN SMALL LETTER A WITH CIRCUMFLEX --> a
00274       0xE3, 0x61, // LATIN SMALL LETTER A WITH TILDE --> a
00275       0xE7, 0x09, // LATIN SMALL LETTER C WITH CEDILLA --> LATIN CAPITAL LETTER C WITH CEDILLA
00276       0xEA, 0x65, // LATIN SMALL LETTER E WITH CIRCUMFLEX --> e
00277       0xEB, 0x65, // LATIN SMALL LETTER E WITH DIAERESIS --> e
00278       0xED, 0x69, // LATIN SMALL LETTER I WITH ACUTE --> i
00279       0xEE, 0x69, // LATIN SMALL LETTER I WITH CIRCUMFLEX --> i
00280       0xEF, 0x69, // LATIN SMALL LETTER I WITH DIAERESIS --> i
00281       0xF0, 0x6F, // LATIN SMALL LETTER ETH --> o
00282       0xF3, 0x6F, // LATIN SMALL LETTER O WITH ACUTE --> o
00283       0xF4, 0x6F, // LATIN SMALL LETTER O WITH CIRCUMFLEX --> o
00284       0xF5, 0x6F, // LATIN SMALL LETTER O WITH TILDE --> o
00285       0xF7, 0x2F, // DIVISION SIGN --> / (SOLIDUS)
00286       0xFA, 0x75, // LATIN SMALL LETTER U WITH ACUTE --> u
00287       0xFB, 0x75, // LATIN SMALL LETTER U WITH CIRCUMFLEX --> u
00288       0xFD, 0x79, // LATIN SMALL LETTER Y WITH ACUTE --> y
00289       0xFE, 0x62, // LATIN SMALL LETTER THORN --> b
00290       0xFF, 0x79, // LATIN SMALL LETTER Y WITH DIAERESIS --> y
00291
00292       0   , 0
00293 };

00295 int special_char2gsm(char ch, char *newch)
00296 {
00297   int table_row = 0;
00298   char *table = iso_8859_15_chars;
00299 
00300   while (table[table_row *2])
00301   {
00302     if (table[table_row *2] == ch)
00303     {
00304       if (newch)
00305         *newch = table[table_row *2 +1];
00306       return 1;
00307     }
00308     table_row++;
00309   }
00310 
00311   return 0;
00312 }
[출처 : http://smstools.sourcearchive.com/documentation/3.1/charset_8c-source.html]

ISO 8859-15 Added the Euro sign and other rationalisations to ISO 8859-1

[링크 : http://en.wikipedia.org/wiki/ISO/IEC_8859-15]


Unicode Character 'LATIN CAPITAL LETTER A WITH GRAVE' (U+00C0)


Encodings
HTML Entity (decimal) &#192;
HTML Entity (hex) &#xc0;
HTML Entity (named) &Agrave;
How to type in Microsoft Windows Alt +00C0
Alt 0192
UTF-8 (hex) 0xC3 0x80 (c380)
UTF-8 (binary) 11000011:10000000
UTF-16 (hex) 0x00C0 (00c0)
UTF-16 (decimal) 192
UTF-32 (hex) 0x000000C0 (00c0)
UTF-32 (decimal) 192
C/C++/Java source code "\u00C0"
Python source code u"\u00C0"
More...


[링크 : http://www.fileformat.info/info/unicode/char/00c0/index.htm]


그렇게나 출장기간동안 나를 광분 상태로 몰아 넣었떤 저 조합방법의 이름이..
ISO 8859-15 였다..

젠장 -ㅁ-! 8859는 지겹도록 보던건데, 15는 새로 생긴건가?!?!?
Posted by 구차니