html_view.php 를 다르게 변형해 봤는데 여전히 인코딩 문제가 발생하네요. 블록

아래 첫번째는 UTF-8 타입의 html_view.php 파일이고 거기에 안드로이드 HTML Viewer 에서 한글이 깨지는 소스뷰 코드를 붙여넣기 해 "전송" 버튼을 누르면 euc-kr 타입의 html_view_ok.php 로 폼데이타를 넘겨 변환된 인코딩을 표시해 주도록 하고 있는데 이게 html_view_ok.php 파일에서 18행 textarea 안의 <?=mb_convert_encoding($string,"EUC-KR","UTF-8")?> 를 <?=$string?> 으로 바꿔주면 원래 깨진 UTF-8 소스코드가 그대로 넘어오면서 euc-kr 인코딩 된 문서 안에서 한글이 깨지지 않아야 하는데 두가지 방법 모두 먹히질 않는다는 거죠. 아무래도 안드로이드 어플에선 웹에서 사용하지 않는 인코딩을 사용하는 것 같은데 혹 안드로이드 어플에서 unicode 를 사용하는 건 아닌지 모르겠습니다. ㅡ_ㅡ;

유니코드는 웹에선 사용할 수 없다고 하던데... 웹에서 한글을 표현하는 방법은 2바이트(영문 1바이트)의 euc-kr 과 3바이트(영문 1바이트)의 utf-8 이란 방법밖에 없답니다. 유니코드는 한글 영문 상관없이 모든 문자를 2바이트로 표현하는 또다른 방법이랍니다. 아무래도 이 문제 같죠? 역시 안되는 건 안되는 거네요. 안드로이드 어플을 개발해야 하는 건가요? 쩝~

<추신>
mb_convert_encoding() 함수는 지난번 포스트에서 Hide_D 님이 덧글로 알려주신 방법이었습니다. 이 함수를 쓰니까 소스 코드가 잘리거나 날아가진 않더군요. 저도 처음 보는 함수입니다.

[html_view.php]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<meta name="viewport" content="width=device-width">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<HEAD>
<TITLE> HTML View 해독하기 </TITLE>
</HEAD>
 
<BODY>
<h3> HTML View 해독하기 </h3>
<FORM NAME="form1" METHOD="Post" ACTION="html_view_ok.php" ENCTYPE="multipart/form-data">
<TEXTAREA NAME="str1" COLS="44" ROWS="18" STYLE="width:99%"></TEXTAREA>
<INPUT TYPE="Submit" VALUE="전송">
</FORM>
</BODY>
</HTML>
cs

[html_view_ok.php]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<meta name="viewport" content="width=device-width">
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<HEAD>
<TITLE> HTML Viewer 해독 결과 </TITLE>
</HEAD>
<BODY>
<h3> HTML Viewer 해독 결과 </h3>
<?
function getmicrotime(){ 
    list($usec, $sec) = explode(" ",microtime()); 
    return ((float)$usec + (float)$sec); 
}
$string = stripslashes($_POST['str1']);
$time_start = getmicrotime();
?>
<TEXTAREA NAME="str1" COLS="44" ROWS="18" STYLE="width:99%"><?=mb_convert_encoding($string,"EUC-KR","UTF-8")?></TEXTAREA>
<?
    $time = getmicrotime() - $time_start;
    print("<p>수행시간 ( $time 초)</p>");
?>
</BODY>
</HTML>
cs

덧글

  • Hide_D 2015/05/26 09:09 # 답글

    우와... 이 짧은 내용에 어디부터 지적해야할지 알수가 없네....
    "이윤찬씨 제발 공부 좀 하세요. 어디서 무식하단 소리 안듣습니까!!!"

    1. 현재 웹에서는 거의 유니코드'만' 사용하고 있구요, EUC-KR은 '구시대 유물' 되겠습니다.
    유니코드의 표현형은 1바이트 단위인 utf-8, 2바이트 단위인 utf-16, 4바이트 단위인 utf-32, 예전(?)에 쓰이던 2바이트로'만' 표현하는 ucs-2 등이 있고,
    웹에서는 유니코드 인코딩으로 utf-8을 사용중입니다. 뭔 말인지 모르시면 공부하시면 되겠고.

    2. html 문서의 charset은 인코딩 변환이 문제면 어지간하면 utf-8로 통일하시고,

    3. 거 전송할때 javascript라도 써서, escape좀 하시죠? utf-8만 쓰는 것도 아니면서 escape도 안하고 쓰는 배짱은 대단하시네요. 아니면 몰라서 그러시나?

    4. mb_convert_encoding를 두번 쓰세요. html_view가 utf-8이고 데이터는 latin-1이니 utf-8 -> latin-1 -> 출력인코딩(이 경우엔 euc-kr)

    5. 이말 또 반복하는데, 제발 공부좀 하세요.... 공부할 생각이 없으면 부족한 지식에 반성이라도 하시구요.
    이윤찬씨 볼때마다 '세상엔 나보다 수준 떨어지는 사람이 참 많구나'하고 위안받고 갑니다 어휴.
  • 희망의빛™ 2015/05/26 18:16 #

    말씀하신 방법으로 저는 변환이 안되어 다시 새 포스트를 작성했습니다. 확인해 보십시요.
  • Miyun_86 2015/05/26 09:30 # 삭제 답글

    ......예? 유니코드를 웹에서 사용할 수 없다구요?

    학부 시절 ASP .Net으로 할때도, 알바로 PHP 기반 쇼핑몰 유지보수할떄도 다 유니코드 사용했는데 이건 뭔........
    육두문자 나올려다가 집어삼켰습니다. 너무 어처구니가 없어서요.

    전에도 노래를 했는데, 제발 무식하면 전공책 좀 사서 보십쇼. 아니면 빌려보셔도 좋으니까 책좀 보세요. 기본을 알아야 구글링해서 찾아도 이게 정답인지 오답인지 알지, 구글링해서 찾은게 본인 상황에 무조건 맞는 정답일꺼라고 신봉합니까?

    본인 병력 운운하면서까지 이야기하고 싶진 않은데, 양자택일을 좀 하시길 바랍니다. 남의 조언 들을 생각 없으면 밸리 발행하지 말고 혼자 떠드시고, 최소한의 조언을 들을 생각이 있으면 자기가 무조건 맞다는 식의 그 정신상태부토 좀 뜯어고치시길 빕니다. 자기 불리한 이야기에는 그냥 쑥 숨고, 조언해주는 사람 개무시에, 소통할 생각도 없으면서 닥치고 밸리 발행... 스스로 사서 욕 먹고 있다는 생각 안 드세요?
  • 다져써스피릿 2015/05/26 15:19 # 답글

    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
    유니코드는 웹에선 사용할 수 없다고 하던데
  • 절망의빛 2015/05/26 18:09 # 삭제 답글

    ... 뭔 마야어로 된 페이지 만드십니까?

    솔직히 모르는건 죄가 아닙니다만.. 이건 그래도 너무 하네요
  • 조현병도풍년 2015/05/26 18:55 # 삭제 답글

    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)
    유니코드는 웹에선 사용할 수 없다고 하던데 (2)

    와... ㅅㅂ 할 말을 잃게 하넼ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
    나도 컴퓨터는 혼자 만지면서 그냥 취미로 공부하는 수준인데
    이 글은 뇌가 있는 사람이 적은게 맞는건가 하는 의문이 드네.
    대체 어느나라에서 유니코드를 웹에서 못 사용하는데요?
    좀 알려주시죠?
  • 엘레시엘 2015/05/27 14:53 # 답글

    아니 구글에서 "유니코드 utf8"만 검색해도 둘 사이의 상관관계가 나오는데 대체 뭘 검색해보셨길래 유니코드가 웹에서 사용 불가다 하는 소리가 나오는건가요? -_-;;;
  • 희망의빛™ 2015/05/27 18:25 #

    제가 참고하고 켑쳐한 글은 아래와 같습니다. 구글에서 검색해 보시면 블로그가 나올 듯 하네요. 제가 출처는 미처 켑쳐해 놓지 않았습니다.
    ======================================================

    일반 유니코드(Unicode)와 'UTF-8 유니코드'의 차이점, 차이

    (1) 보통의 한국어 텍스트 문서: 이것은 아스키 문서이며 유니코드가 아닙니다. 영문/숫자/기호는 1바이트. 한글과 한자는 2바이트로 표현됩니다. euc-kr 또는 ksc_c_5601-1987 로 불리는 인코딩이며 웹페이지 작성에 사용할 수 있습니다. 특수한 외국어 문자나 일본식/중국식 한자는 표현할 수 없습니다.

    다음의 2개가 유니코드입니다:

    (2) 일반 유니코드(Unicode): 모든 글자를 2바이트로 표현합니다. 전세계 모든 글자들을 한꺼번에 표현할 수 있습니다. 인터넷에 HTML 파일로 올릴 수 없습니다. 즉 웹페이지 작성에 쓸 수 없습니다.

    (3) UTF-8 유니코드: 영문/숫자/기호는 1바이트로, 한글과 한자 등은 3바이트로 표현합니다. 전세계 모든 글자들을 한꺼번에 표현할 수 있습니다. 웹페이지 작성에 쓸 수 있습니다. (저의 mwultong.blogspot.com 이 블로그도 UTF-8 로 되어 있습니다)

    MS윈도우2000/XP 이상에서는, 외부적으로는 '일반 아스키 인코딩(1번)'을 사용하고, 내부적으로는 '일반 유니코드(2번)'를 사용합니다.

    유닉스/리눅스/오픈소스 진영에서는 (1)번 또는 'UTF-8 유니코드(3번)'를 기본으로 사용합니다.

    그렇지만 윈도 메모장에서도 UTF-8 유니코드 문서를 읽고 저장할 수는 있습니다.
  • 희망의빛™ 2015/05/27 18:26 #

    http://mwultong.blogspot.com 라고 본문에 블로그 주소도 나오네요. ^^;
  • Hide_D 2015/05/27 19:24 #

    이분은 일단 '레퍼런스 체크' 같은 개념이 없는 분이라는건 다시 한번 알겠고.

    Windows 기준으로만 적혀있어서 내용에 일부 오류가 있긴 합니다만
    'UTF-8 유니코드' 라는 용어에서 어떻게 '유니코드는 웹에선 사용할 수 없다'는 결론이 나오게 되는지 참으로 궁금하군요.

    저 부분은 '웹에서 쓰는 유니코드는 UTF-8 유니코드이며 일반 유니코드와는 다르다.'라고 해석해야 정상이 아닌지?

    조현병이 문제가 아니고 난독증도 같이 있으신가...
  • Miyun_86 2015/05/27 19:31 # 삭제

    .......제가 국어를 잘못 읽었나하고 몇번을 다시 읽어도 웹에서 유니코드 못 쓴다는 소리는 못 찾겠군요.

    기껏 제시하는 레퍼런스라는 것도 자폭용이고... 진짜 전공서 좀 보세요. 이건 기초 레벨도 아니고 상식선입니다, 상식선.
  • 절망의빛 2015/05/28 07:00 # 삭제

    윤찬씨.. 글은 끝까지 잘 읽어 봐야 합니다.
    님이 착각한게.. 아마 (2)의 일반 유니코드 항목에서 '웹페이지 작성에 쓸 수 없습니다' 하나만 보고 오신 것 같은데.. 실제 그 페이지 가보면 글씨가 저 부분만 빨간색으로 되어 있어서, 윤찬씨 처럼 주의력이 산만하신 분들이 읽고 현혹될만 합니다.

    그리고.. 이건 다른 얘긴데..
    남들이 님한테 뭐 하나 물어보면 님 대답은 '제 코드 다운받아서 보시면..', '님들이 구글 검색해 보시면..'
    뭐 이런 식으로 답변하시고, 실제로 님이 자세히 대답해 주는 경우는 거의 드문데, 그러신 분이 대리점 직원이 잘 안알려 준다는 둥, 민원에 대한 답변이 엉뚱하다는 둥 그런 소리는 잘만하시네요.

    당신이 그런말 할 자격이 있습니까? 여기서도 구글에 검색해 보라고 하네.. 거 참..

    정말 자기 편한대로만 세상 사시는군요
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색