Press "Enter" to skip to content

[월:] 2022년 05월

리눅스 텍스트파일 한글깨짐 고쳐보기

오래된 프로그램 소스나 텍스트 파일에서 한글깨진 파일이 있을 경우가 있다.

일단 예전 파일이 요즘쓰는 utf-8로 변환되어 있지 않아서 나타나는 현상이 대부분이다.

현재 리눅스 시스템이 어떤 인코딩 타입을 사용하고 있는지 알아보자

# locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

UTF-8을 사용하고 있군요.

다음. 한글이 깨지는 파일의 인코딩 형태를 파악해 보자.

# file -bi test.txt
text/plain; charset=utf-8

이 파일은 텍스트 파일인데 utf-8로 저장되어 있다는 소리다. 리눅스 시스템도 UTF8이니깐 이 파일은 잘 보일거다.

리눅스 시스템이 UTF-8인데 파일은 euc-kr 이라면 깨져 보일 것이다.

리눅스 시스템이 EUC-KR인데 파일이 UTF-8이라면 역시 깨져 보일 것이다.

파일 인코딩을 euc-kr 에서 utf-8로 변환하여 저장하는 방법

# iconv -c -f euc-kr -t utf-8 org.txt > new_utf8.txt

[PHP] mysql update 된 row 수 체크하기

<?php
$mysql = new mysqli("localhost","username","password","use_db");

if($mysql->connect_errno)
{
  echo "MySQL 접속 실패 : ".$mysql->connect_error;
  exit();
}

// 업데이트 처리
$mysql->query("UPDATE usertable SET name = 'myName' where id = 100");
echo "적용된 row 수: ".$mysql->affected_rows;

$mysqli->close();
?>

SELECT 일때도 동일하게 사용할 수 있습니다.

다만, query() 의 리턴 변수에서 체크하는 것이 아니라 mysqli 인스턴스로 체크합니다.