차이점은 문자 인코딩입니다. 문자 인코딩은 문자를 바이트로 나타내는 방법입니다.
문자는, 당신은, 자신의 유니 코드 코드 포인트는 UTF-8 (또는 라틴-1 또는 ASCII)를 사용하면 얻을 것이다이 문자열을 인코딩하는 데 사용하는 경우
A code point 41
1 code point 31
2 code point 32
8 code point 38
7 code point 37
5 code point 35
, 필드에 패딩 남아 있습니다 20 바이트 :
41 31 32 38 37 35 00 00 ... 00
하지만 다른 문자 인코딩이 있습니다. 스토어드 프로 시저를 실행할 때 UTF-16LE을 인코딩으로 선택하고 여하튼 공백 문자가 앞에 오게되는 것처럼 보입니다. UTF-16LE의 코드 점 (41)은 일반적 0041
것이기 때문에
41 00
로 표현되지만 바이트가 반전된다. 그래서 당신은 기대 :
41 00 31 00 32 00 38 00 37 00 35 00 ... 00 00
공간 문자는 그래서이 20 00
로 표현되는 코드 포인트 20
입니다. 왜 그들이 공간을 앞에두고 있는지 모르겠다. 리틀 엔디안의 경우 2000
이고 빅 엔디안의 경우 0020
과 같이 바이트 순서 표시를 만드는 재미있는 방법 일 수 있습니다.
문자가 바이트로 변환 될 때 문자 인코딩을 사용하는 방법을 보려면 SQL Server 설명서를 참조하십시오. 알다시피, 언제든지 문자를 바이트로 변환하려고하면 은 인코딩을 지정해야합니다. 어쩌면 디폴트가있을 수 있지만 일반적으로 문자 -> 바이트는 인코딩 없이는 의미가 없습니다. 시나리오에서는 서로 다른 두 환경에서 서로 다른 두 가지 기본값을 사용했습니다.
'A12785'은 ** 아닙니다 ** NVARCHAR 리터럴 - N'ABC12785 '가됩니다 .... –