cmd 에서 웹서버로 데이터 전송시 한글깨짐 (cp949 > utf-8)

윈도우즈/OS 일반|2020. 6. 7. 19:51
반응형

[상황]

윈도우에서 MySQL (UTF-8) 을 이용하는데 아래와 같은 증상이 발견 되었다.

 

(명령프롬프트에서)

MySQL 명령으로 쿼리시 한글 잘 보임, INSERT, SELECT 등의 작업이 잘 됨.

하지만, 쿼리 결과를 파일로 저장하거나 ( > result.txt) 변수에 결과를 담으면 한글이 깨져보인다.

 

chcp 명령으로 확인하니 euc-kr 의 확장판인 cp 949 이며, chcp 65001 명령으로 명령프롬프트를 UTF-8 로 바꾸니 결과는 잘 저장되지만, 또 다른 한글이 쓰여진 파일은 반대로 깨져보인다.

 

그때는 chcp 명령을 통해 적절히 언어셋 환경을 바꿔가면서 작업하면 된다.

그리고 웹서버로의 데이터 전송은 curl 을 사용한다면, get 방식 보다는 post 방식으로 전송해야 깨지지 않을 것이다.

 

# send.bat

@echo off
 
:: 먼저 DB 에서 한글 데이터 가져올때는 utf-8 로 가져오고
chcp 65001
FOR /F "tokens=* USEBACKQ" %%F IN (`c:\mysql\bin\mysql.exe -usysdocu -p"12345678" testdb -N -e "select name from members where id='12'"`) DO ( SET var=%%F )
 
:: 파일에서 한글 데이터 가져올때는 949 로 가져온다.
chcp 949
set /p area=<C:\area.txt
 
:: 그러면 둘다 한글이 잘 표기된다.
curl -d "name=%var%" -d "area=%area%"  http://sysdocu.tistory.com/test.php

 

반응형

댓글()