๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Lang/๐Ÿ Python

โœ… Solved * [Python] ํ•œ๊ธ€ encoding์ด ๋˜์ง€ ์•Š์„ ๋•Œ

โ—‡ Linux: Ubuntu 16.04 LTS

 

+ 2020/03/03

  • Python 3.6์€ ๋ฌธ์ž์—ด ์ธ์‹ ๋ฐฉ๋ฒ•์ด ๊ธฐ๋ณธ์ ์œผ๋กœ utf-8 ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฒ„์ „๋ณ„๋กœ ๊ธฐ๋ณธ ์ธ/๋””์ฝ”๋”ฉ  ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ธฐ์— ๊ด€๋ จ๋œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด ์ฐพ์•„๋ณด๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค.

 


1. ํŒŒ์ผ์˜ ๊ฐ€์žฅ ์œ„์— ์ฃผ์„์„ ์‚ฝ์ž…ํ•œ๋‹ค.

# -*- coding:utf-8 -*-

์œ„์˜ ์ฃผ์„๋ฌธ ์ดํ›„์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด์ด UTF-8 ํ˜•์‹์ด๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹œํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

๋ณดํ†ต์˜ ๊ฒฝ์šฐ ์œ„์˜ ๋ฌธ์žฅํ•˜๋‚˜๋งŒ ์ ์–ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ •๋ฆฌ๊ฐ€ ๋œ๋‹ค. 

ํ•˜์ง€๋งŒ, ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด ์™ธ๋ถ€์—์„œ ๋ถˆ๋Ÿฌ์˜จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ importํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ์ด ๊ฒฝ์šฐ ๋งค๋ฒˆ ๊ฐ ํŒŒ์ผ ์ƒ์œ„์— ์ฃผ์„์„ ์‚ฝ์ž…ํ•ด ์ฃผ๊ฑฐ๋‚˜ ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•์„ main file์—๋‹ค๊ฐ€ ์‚ฌ์šฉํ•ด์ค€๋‹ค.

2. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹ ์„ค์ •

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

์™ธ๋ถ€์—์„œ ๋ถˆ๋Ÿฌ์˜จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ ํŒŒ์ผ์„ ํ•ด๋‹น ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ•œ๋‹ค.

3. ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์„ค์ •ํ–ˆ๋Š”๋ฐ๋„ ์•ˆ๋  ๋•Œ

UNICODE๋กœ Decoding ํ›„ ๋‹ค์‹œ Encodingํ•œ๋‹ค.

๋”๋ณด๊ธฐ

Python์˜ ๋ฌธ์ž์—ด ์ธ์‹ ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Unicode๋ผ๊ณ  ํ•œ๋‹ค. 

๋”ฐ๋ผ์„œ, ๋ฌธ์ž์—ด์„ decodeํ•˜๋Š” ๊ฒƒ์€ ํŠน์ • ์ธ์ฝ”๋”ฉ(cp949, iso08859-1,utf-8 ๋“ฑ๋“ฑ)์—์„œ Unicode๋กœ ๋ฐ”๊พธ์–ด์ฃผ๋Š” ๊ฒƒ์ด๊ณ ,

encodeํ•˜๋Š” ๊ฒƒ์€ Unicode๋ฌธ์ž์—ด์„ ํŠน์ • ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 < ์˜ˆ์‹œ > test = test.decode('cp949').encode('utf-8')

test๋ผ๋Š” cp949๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด์„ Unicode๋กœ Decodingํ•œ ํ›„์— utf-8๋กœ ๋‹ค์‹œ Encodingํ•ด์ค€๋‹ค.

์›๋ž˜ cp949 ์ž๋ฆฌ์—๋Š” ๋ฌธ์ž์—ด์˜ ์ธ์ฝ”๋”ฉ๋ฐฉ์‹์„ ์•Œ์•„์„œ ์ ์–ด์ค˜์•ผํ•˜๋Š”๋ฐ ํ•œ๊ธ€ ๋ฌธ์ž์—ด์ผ ๋•Œ ์—๋Ÿฌ๋Š” ๋ณดํ†ต cp949์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

 

 

 

 

์ฆ‰, ์œ„์˜ 1๋ฒˆ 2๋ฒˆ์„ ๋ฐฉ๋ฒ•์„ ํ•„์ˆ˜๋กœ main file์— ์ ์šฉํ•˜๊ณ  ๊ทธ ์™ธ์— ์ถฉ๋Œ ๋ถ€๋ถ„์— 3๋ฒˆ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.