윈도우 CMD와 엑셀에서 CSV 텍스트파일 읽을때의 캐릭터셋 > PHP
PHP

윈도우 CMD와 엑셀에서 CSV 텍스트파일 읽을때의 캐릭터셋

조회 134회 댓글 0건

앞으로 캐릭터셋은 utf-8이 아니라 utf-8 bom을 사용해야 합니다. 

utf-8 캐릭터셋은 한글이 깨져서 보이는데 이때문에 예전에 ANSI로 저장(euc-kr) 처리를 많이 하곤 했습니다. 

하지만 현재는 utf-8과 호환되는 utf-8 bom 사용하는 것이 좋겠지요.

그래야 더 풍부한 캐릭터셋 특수문자(이모티콘)를 사용할 수 있기 때문에 그렇습니다. euc-kr은 이모티콘을 사용하지 못해요~


● 엑셀(Excel)에서 CSV 파일 한글 깨지지 않게 하려면

  - 엑셀에서 바로 CSV 열기: EUC-KR 또는 UTF-8 BOM


● 캐릭터셋 참고사항

  - 글로벌 호환성 생각: UTF-8 BOM

  - 서버 시스템 처리 위주: UTF-8 (BOM 없음)

  - 엑셀에서 깨짐 방지: UTF-8 BOM 강추


639312927dff10c63be22075a759729f_1740880396_1711.png
639312927dff10c63be22075a759729f_1740880424_0974.png 

PowerShell 은 기본이 utf-8 bom 인데 cmd는 utf-8 bom이 없고 utf-8을 사용하려면 chcp 65001 명령을 통해서 가능!!

cmd 기본은 euc-kr과 호환이 되는 949

 

데이터베이스 설정도 반드시 utf-8 bom으로 해야 겠습니다. utf-8로 잘 보인다고 그냥 넘어 갈것이 아니라 반드시 utf-8 bom 인지 봐야 합니다.

에디터에 따라서는 utf-8+로 표시하기도 합니다.


아래는 CSV 저장하는 캐릭터셋과 별개로 PHP를 사용하면서 웹개발 할때의 캐릭터셋 문제 입니다. UTF-8 BOM은 앞에 표시하기 위해서 추가적인 캐릭터셋이 있는데 이게 ? 것으로 보이기도 합니다. 텍스트 파일인데 에디터나 어느곳에서 ? 이런게 보인다 그럼 UTF-8 BOM 으로 저장되서 그런가 생각해볼 필요가 있습니다.


✔ UTF-8 BOM이란?

UTF-8 BOM(Byte Order Mark)은 파일 맨 앞에 붙는 3바이트( EF BB BF )인데 이게 파일이 UTF-8 인코딩이라는 걸 표시하는 역할


✔ 웹에서 BOM이 문제되는 경우

- HTML CSS JS 같은 파일에 BOM이 붙으면 서버가 전달할 때 그 BOM이 출력물에 포함돼버릴 수 있음.

- 특히 JSON 응답 같은 경우 BOM이 있으면 프론트엔드에서 파싱 오류 가능 예) "Unexpected token  in JSON" 

- HTTP 응답 헤더로 이미 UTF-8 인코딩을 명시하면 BOM은 필요가 없음

- 일부 구버전 브라우저나 프로그램에서 BOM이 있는 파일 처리를 못하는 경우도 있음



  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 215건 1 페이지
  • profile_image 아래 프로그램 실행전에 앱키와 시크릿키는 API키 발급 받는곳에서 먼저 받아 놓아야 합니다.키움증권 REST API 사용신청 하는곳API 사용신청 | 키움 REST API REST는 특성성 프로그램 언어와 관계 없습니다. 예제에서 파이선 자바스크립트 이렇게 있고 PHP 없다고 하여 안되는것이 아닙니다.물론 인터넷(네트워크) 지원 안되는 언어는 안됩니다.그렇기 때문에 리눅스 쉘에서 쉽게 테스트 할 수 있는 아래도 당연히 됩니다.curl -X POST -H "Content-Type: application/json;charset=UTF-8" -d '{"grant_type":"client_credentials","appkey"…
  • profile_image 쉽게 한번만 사용할거냐 여러번 사용할거냐에 대한 차이라고 생각해도 됩니다.특별한 경우가 아니라면 다목적으로 사용이 가능한 bindParam 를 많이 사용 합니다. 구분해서 사용하려면 또 신경을 써야 하기 때문에 그렇죠▶ bindParam() (참조 바인딩)  - 변수 자체를 바인딩 (이후 변수 값이 바뀌면 SQL 실행 시 그 값이 적용됨)  - 변수를 직접 전달해야 하고 즉시 값 대입이 불가능  - 반복문에서 같은 변수를 여러 번 사용할 경우 적합. 그리고 파라미터는 상수가 아니라 변수를 넣어줘야 합니다.△ 비유: 패스트푸드점에서 "세트 메뉴 1번"을 주문하고, 음료는 나중에 결정할 수 있는 방식    $menu = "…
  • profile_image 아래는 쿼리 문장에 문자열을 넣어주는 일반적인 방식으로 SQL 공격에 무척 취약한 방식의 예 입니다.보통 아래와 같은 문제가 발생하고 실무에선 쿼리를 보면 먼저 정보를 얻는것에서 시작을 합니다.    # SQL 인젝션이 성공하는 경우 (취약한 코드)    # 결과: SELECT * FROM users WHERE username = ''; DROP TABLE users; -- AND id = 123    $test11 = "'; DROP TABLE users; --";    $test22 = 123;    $sql = "SELECT * FROM users WHERE username = '$test11' AND id = $…
  • profile_image 문자열:s 숫자:i 이렇게 사용하는 방식은 파라미터가 많으면 복잡해서 알아보기 힘들죠그래서 만들어진 사용자 함수 입니다.    # MySQLi에서 Named Parameter처럼 사용할 수 있도록 변환하는 사용자 함수    function prepareNamedQuery($mysqliCon, string $sql, $params) {        preg_match_all('/:\w+/', $sql, $matches);        $namedParams = $matches[0];         $sql = str_replace($namedParams, '?', $sql);        $values = [];     …
  • profile_image 아래는 도메인 목록을 배열로 가지고 있다고 가정하고 만들어진 프로그램 입니다.kr의 경우 요즘은 utf8로 나오기 때문에 euckr 환경이신분은들은 캐릭터셋을 변경하는 기능이 한줄 더 들어가야 합니다.그리고 후이즈 조회는 너무 많이 하면 차단 됩니다.여기서 너무 많다는 기준은 없지만 최소 몇 백은 되기 때문에 도메인 만료일 체크하기 위해서 실행하는것에는 문제는 없습니다.    # 루트 도메인만 추출    $root_domains = [];    foreach ($domains as $domain) {        if ($domain === '_default_') continue; // 제외        if (preg…
  • profile_image csv파일 읽어서 처리할 때 날짜를 기준으로 하는데 같은 날짜가 아니라 다른 날짜로 처리 해야 되는 경우 만들어진 프로그램 입니다.csv파일의 캐릭터셋에 대해선 별도 정리가 필요한 상태이고 윈도우10 사용한지 오래 되었는데 이 문제가 업그레이드 되면서 변경 되었는지 어땟는지는 현재로선 중요하지 않고 잘 나오면 그만인거죠cmd도 예전엔 cp949로해서 처리 했는데 지금은 둘다 잘 보이는 구조로 되어 있는듯 합니다.그리고 엑셀은 euckr, utf-8 bom 두개가 문제 없으며 utf-8은 안됩니다.<?php// 공휴일 배열$holidays = [    "2025-01-01", // 신정    "2025-02-11",…

상업적 이용 금지. 컨텐츠는 개인 용도로만 사용이 가능 합니다.