2017년 4월 19일 수요일

04-19

utf-8 ? utf-8 bom? 무슨차이? 왜 오류?


현상 : 가끔씩 페이지 맨 위에 빈 공백이 생김, 찾아보면 빈 공백만 있음, 크롬으로 찾아보면  문자열이 표시되있음

The character in question &#65279 is the Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF) attached to your code on a copy/paste or during a faulty Save its so simple to fix that, just open that file by notepad++ and step follow -->  Encoding->Encode in UTF-8 without BOM. then save that. It work for me as well!

http://stackoverflow.com/questions/15801043/php-include-creates-unwanted-gaps-in-html


해결책 : UTF-8 BOM으로 되있는 페이지를 UTF-8로 변경

QA 1 : BOM(Byte Order Mark)이란?

유니코드가, little-endian 인지 big-endian 인지 아니면 UTF-8 인지 쉽게 알 수 있도록, 유니코드 파일이 시작되는 첫부분에 보이지 않게, 2~3바이트의 문자열을 추가 이것을 BOM이라고 함.

QA 2 : little-endian 인지 big-endian은 무엇인지?

MS윈도에서 내부적으로 사용되는 유니코드(UTF-16LE)는 16비트 즉 2바이트로 하나의 글자를 표현합니다. 바이트가 2개니까 이 바이트에 순서가 정해져 있어야 합니다. big-endian 은 있는 순서 그대로 바이트를 자연스럽게 나열하는 것이고, little-endian 은 속도를 빠르게 하기 위해서 거꾸로 나열하는 것입니다.

MS윈도의 유니코드는 리틀 엔디안 little-endian이 기본값입니다. 빅 엔디안 유니코드는, 울트라에디터 v11 등의 일부 프로그램에서 전혀 인식하지 못했습니다.


반면 UTF-8 에는 리틀 엔디안이나 빅 엔디안의 구분이 없습니다.


결론 : UTF-8 BOM으로 되있는 페이지를 UTF-8로 변경

2017년 4월 4일 화요일

2017-04-03

char vs varchar 차이

char는 고정길이 데이터
varchar는 가변길이(고정길이 포함)일 경우 사용

varchar2 블럭분할 발생
char 데이터가 없어도 빈(null) 데이터를 저장시 미리 공간 할당 하기때문에
비어있는 데이터를 update 하더라도 미리 할당된 공간 내에서 저장

2개의 블럭 I/O보다
1개의 블럭 I/O를 읽어오는것이 성능에 더 이득

https://okky.kr/article/217655 참고

===================================

varchar(10)이면 한글은 대체 몇자?

mysql , MariaDB
varchar(10) : 한글10자, 영문,숫자 10자

MS-SQL
varchar(10) : 한글 5자, 영문,숫자 10자
nvarchar(10) : 한글 10자, 영문, 숫자 10자

Oracle
varchar2(10) : 한글 3자, 영문,숫자 10자
nvarchar2(10) : 한글 10자, 영문,숫자 10자