UTF-8 을 EUC-KR 로 변환

libxml2를 사용하여 파싱을 하게되면 한글이 무조건 utf-8로 변환되어 버리더군요.
문제 해결을 위해 iconv라이브러리를 사용했습니다.

[CODE type=c++]
#ifndef _UTF8TOEUCKR
#define _UTF8TOEUCKR

#include
static int UTF8toEUCKR( char *outBuf, int outLength, char *inBuf, int inLength )
{
iconv_t cd = iconv_open( "EUC-KR", "UTF-8" );

int ires = (int)iconv( cd, &inBuf, (size_t*)&inLength, &outBuf, (size_t*)&outLength );

iconv_close(cd);

return ires;
}

#endif
[/HTML][/CODE]
[참고]
http://www.redwiki.net/wiki/wiki.php/iconv#s-3.1.1
http://www.pie.pe.kr/cgi-bin/moin.cgi/LibIconv
http://www.gnu.org/software/libiconv/

UTF-8 인코딩 방식으로 다국어 페이지 만들기

1. 일반 Ansi 형식이 아닌 UTF-8형식의 Text파일로 스크립트 파일을 저장합니다.

2. <% @Codepage = "65001" %>
서버 스크립트 최상단에 위의 코드를 넣어줍니다.

3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 html 해더부에 위의 코드를 넣어 줍니다.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
예재 소스 입니다.

inputUnicode.html
------------------------------------------------------------
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>

</HEAD>

<BODY>
<FORM METHOD=POST ACTION="testUnicode.asp">
<INPUT TYPE="text" NAME="uniText" size=100>
<INPUT TYPE="submit">
</FORM>
</BODY>
</HTML>


testUnicode.asp
------------------------------------------------------------
<% @Codepage = "65001" %>
<!--#include virtual="/include/dbcon.asp"-->
 <!--#include virtual="/include/function.asp"-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>

</HEAD>

<BODY>
<%
Set db=Server.CreateObject("ADODB.Connection")
db.Open DbConstring


'-------------------------------------------------------------
'  유니코드 DB에 넣기 테스트
'-------------------------------------------------------------

if  request("uniText") <> "" then


response.write "<hr><br><B>DB넣기<U></U></B><br>"

sql = "INSERT INTO tblText ( test ) values ( N'" & request("uniText") & "')"
response.write sql & "<br>"

db.Execute sql

response.write "<br>넣은값 : " & request("uniText") & "<br>"


end if

'-------------------------------------------------------------
'  유니코드 DB에 읽기 테스트
'-------------------------------------------------------------
response.write "<hr><br><B>DB읽기</B><br>"

sql = "select test from tblText"

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql, db

Do until rs.EOF

       response.write "<br>" & stripHTML(rs("test")) & "<br>"
 
  rs.MoveNext  
Loop


%>
</BODY>
</HTML>


function.asp
------------------------------------------------------------

<%
Function stripHTML(strHTML)

strHTML = Replace(strHTML, "<", " & l t ;")   ' 사용할땐 공백없애고요
strHTML = Replace(strHTML, ">", "& g t ;")

stripHTML = strHTML

End Function


%>


dbcon.asp는 상황에 따라..^^

그리고, mssql의 tblText 테이블의 test 필드는 nvarchar형이어야 합니다.

UTF8, 유니코드, 아스키 파일의 구별

* ANSI 텍스트 파일
- 특별한 표식이 없습니다.

* 유니코드 (little endian)
파일 처음에 0xFF 0xFE 의 두바이트로 시작합니다.

* 유니코드 (big endian)
파일 처음에 0xFE 0xFF 의 두바이트로 시작합니다.

* UTF-8
파일을 덤프 해본 결과 파일 처음에 0xEF 0xBB 0xBF 의 세바이트로 시작합니다.



한번 파일을 만든후 덤프 해보시기 바랍니다
그럼 즐삽