KTUG:UTF-8 UniversalTransformationFormat8Bit, [[RFC]] 2279 UniCode는 상대적으로 비효율적인 CharacterSet이다. 따라서, 적절한 인코딩 방법을 사용하여 영미권에서 자주 사용하는 문자셋에 대해 적은 바이트를 사용하도록 하는 좀더 효율적인 방식의 인코딩이 필요하게 되었는데, 이것이 UTF-8 [[ASCII]] 문자셋은 한 byte로 인코딩하고, 나머지에 대해서는 2,3byte로 인코딩한다. 관련정보 * KLDP:LinuxdocSgml/UTF8-Unicode-TRANS * [[http://bbs.kldp.org/viewtopic.php?t=37874|"URL을 항상 UTF-8로 보내기"에 관하여]] [[Python]]에서의 변환방법 (euc-kr -> utf-8) SeeAlso PythonAndHangul {{{#!python euckr2utf8 = lambda s: unicode(s, 'euc-kr').encode('utf-8') }}} [[PHP]]에서 문자열자르기함수 from [[http://x.debugs.co.kr/source/testcode/utf8_cutstr.php|거친마루님 페이지]] {{{ = $len ? $tail : ''); } ?> }}} 특정디렉토리의 밑의 특정확장자 파일변환 {{{ [yong27@est test]$ cat cvtEncoding #!/bin/sh for cfile in `find . -name "*.${1}"` do echo Processing ${cfile} iconv -f "$2" -t "$3" "$cfile" > "${cfile}_" mv "${cfile}_" "$cfile" done [yong27@est test]$ ./cvtEncoding py euc-kr utf-8 Processing ./enc.py }}} 관련 스크립트 * 특정디렉토리 밑의 모든 파일 및 파일,경로네임 변환 --> [[EncodingConverter.py]] * [[http://ubuntu.or.kr/viewtopic.php?f=18&t=7861|cp949 압축 풀기]] ---- BioinfoWiki도 그렇고, TatterTools도 UTF-8이 아닌 EUC-KR을 쓰고 있다. 점차적으로 변경요망. --[[yong27]], 2004-10-06 UTF-8로 전체 변환 --[[yong27]], 2005-06-26 특정문자열에 대해, 인코딩을 자동으로 인식하는 프로그램을 만들어야겠다. [[Google]]서 대충봤는데 없는듯하고... 모든 인코딩에 대해 다 할 수 는 없겠고, 한국어사용자를 위한 utf-8 or euc-kr만 인식하는것은 가능하지 않을까? 자음+모음의 형식이 대강 맞으면 utf-8 아니면 euc-kr. '' --> UniversalEncodingDetector 가 있다'' 일단은 가장 간단한 버젼. {{{#!python #encoding:utf-8 import unittest class HangulEncodingRecognitor: def getEncoding(self, code): encoding = None try: u = unicode(code,'euc-kr') encoding = 'euc-kr' except UnicodeDecodeError: pass try: u = unicode(code,'utf-8') encoding = 'utf-8' except UnicodeDecodeError: pass assert encoding, "Unknown encoding" return encoding class Test(unittest.TestCase): def setUp(self): h='테스트 한글' u=unicode(h, 'utf-8') self.utf8 = u.encode('utf-8') self.euckr = u.encode('euc-kr') def testGetEncoding(self): her = HangulEncodingRecognitor() self.assertEquals('utf-8',her.getEncoding(self.utf8)) self.assertEquals('euc-kr',her.getEncoding(self.euckr)) if __name__=='__main__': unittest.main() }}} --[[yong27]], 2005-06-27