IT&모바일&컴퓨터

자소분리한글(MAC:NFD)문자열의 정상변환 해결(WEB NFD2NFC)

쩌비^^* 2025. 6. 25. 11:28
반응형

아래와 같이 mac을 사용하는 사람들이 보낸 화일명을 window에서 열어보면 마치 한글이 깨진것 처럼, 한글자소가 분리되어서 너무 불편할 때가 많다. 이러한 의도치 않은 한글 깨짐을 해결해보자.

 

  • 원래 문자열(MAC) : 권장학술대회 목록(NFD) -> 보여지는 문자열(Windows) :

 

 

 (위의 문자열 복사해서 자신의 pc 메모장에 붙여넣어보면 오른쪽과 같이 깨진다!!)

 

그런데 그화일이 첨부된 메일의 html을 까서 보면 다음처럼 자소가 분리되어 있지 않다.

 

1. HTML의 자소분리안된 글자를 복사해보면?

그래서 요 html의 자소분리가 안되어 보이는 텍스트를 복사해서 메모장에 붙여넣어본다.

 

 

여전히 분리가 되어 있다 ㅠㅠ

→ 여기서 알수 있는 것이 문자열 자체의형식이라 안되는 것을 알수 있다.

 

 

그렇다면 구글 브라우저의 검색기능으로 바로 보내는 기능을 아래와 같이 써보면??

 

 

2. HTML의 자소분리안된 글자를 우클릭하여 구글검색으로 바로 보내면?

크롬브라우저라서 우클릭하여 구글검색으로 바로 보내보자.

 

 

오 다음과 같이 자소분리가 되어 있지 않다?

성공인가?

 

 

2.A. 하지만 저 검색창의 글자를 복사해서 다시 메모장에 붙여넣어 보면?

 

 

여전히 한글 내용은 바뀌지 않았다.

 

결국 포기하고 아래에서 chatgpt나 검색에서 보여 주는 동일한 글자를 복사해서 얻는 것이 그나마 다시 타이핑 할 시간을 줄여줄 수 있지 않을까? 해서 아래와 같이 해본다.


2.B. 검색엔진의 응답에 있는 글자를 복사하면?

 

 

 

그렇다 된다. 다음과 같이 windows에서 깨지지 않는 글자형태로 복사 할 수 있다.

 

 

하지만 이방식으로 다 해결은 안될 테니까.. 다른방법을 찾아본다.

그전에 우선 이쯤해서 정리해보면,

 

<고찰> MAC 과 Windows의 한글 조합형 문자 표현방식의 차이

문자열이 정상(자모비분리)으로 보여지는 MAC에 만든 한글문자를 복사해서, Windows의 메모장등에 붙여보면 비정상(자모분리)으로 보여지는 까닭은, MAC에서는 NFC(Composed) 방식으로 표현하지 않고 NFD(Decomposed)의 한글 자모를 분리해서 표현하기 때문이다.

이 문자열은 유니코드 방식중 NFD라는 방식으로 표현되어 있습니다.

 

라고 아예 문자열에 내장되어 있다.

 

한편, 브라우저나 특정한 어플리케이션들은 그러한 자모분리 문자열을 자모비분리 문자열로 바꿔서 보여주기 때문에, 위의 방법 1과 방법 2A에서는 보이기는 정상적으로 보여도, NFD->NFC 변환에는 실패한 것이다.

 

이제 상시적으로 해결할 수 있는 방법으로는 다음의 사이트를 이용하는 것도 추천한다.

 

3.1 웹사이트에서 NFD->NFC로 바꾸기 https://dencode.com/

 

자소분리된 텍스트를 긁어서 아래의 사이트에서 넣어보면(자소분리가 안된것 처럼 보이지만 NFD양식의 글자열임),  그 아래로 자동으로 여러가지 방식으로 디코드 해서 보여주게 된다.

 

 

그 중에서 아래와 같이 Unicode NFC를 찾아서 복사해서 사용하면 해결된다.

 

 

 

 

3.2 javascript가 직접변환해주는 HTML을 직접만들어서 NFD->NFC로 바꾸기

 

다음과 같이 메모장에다가 넣고 저장을 nfd2nfc.html으로 저장한다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>Unicode 정규화 예제</title>
</head>
<body>
⦁ <textarea id="input" placeholder="NFD 문자열 입력"></textarea><br>
⦁ <button onclick="convert()">NFC로 변환</button><br>
⦁ <textarea id="output" placeholder="변환된 NFC 문자열"></textarea>

<script>
function convert() {
   const txt = document.getElementById('input').value;
   // NFD → NFC
   const normalized = txt.normalize('NFC');
   document.getElementById('output').value = normalized;
}
</script>
</body>
</html>

 

다음과 같이 메모장에다가 넣고 저장을 nfd2nfc.html으로 저장한다.

 

그 화일을 크롬에서 읽어보면 다음과 같이 외부사이트 없이 NFD->NFC로 변환을 할 수 있게된다.

 

3.3 블로그에서 직접 javascript 삽입하여 NFD->NFC로 바꾸기(작동잘됨) - WEB NFD2NFC 

 

아래는 실제테스트!!로 잘 자소분리 mac글자를 자소합쳐진 window글자로 잘 변환해줍니다.

(단, 블로그자체 제한으로 변환이 안될수 있으며, 사이트에 부담이 되면 제가 javascript부분을 끌 수도 있습니다.)

 

 

이로써 해결완료!!!!

 

아래는 블로그 자체 삽입코드 부분임

<p data-ke-size="size16">⦁<textarea id="input" placeholder="NFD 문자열 입력"></textarea></p>
<p data-ke-size="size16">⦁<button onclick="nfd2nfc_convert();">NFC로 변환</button></p>
<p data-ke-size="size16">⦁<textarea id="output" placeholder="변환된 NFC 문자열"></textarea></p>
반응형