사람들이 유니 코드가 아닌 일본어 전용 인코딩을 사용하게하는 문제는 무엇입니까?


24

직장에서 Shift-JIS 및 기타 인코딩으로 많은 일본어 텍스트 파일을 발견했습니다. 모든 컴퓨터 사용자에게 여러 가지 모모 베이크 (판독 불가 문자) 문제가 발생합니다. 유니 코드는 모든 언어에 대해 단일 문자 집합을 정의하여 이러한 종류의 문제를 해결하기위한 것이며 UTF-8 직렬화는 인터넷에서 사용하는 것이 좋습니다. 그렇다면 왜 모두가 일본어 전용 인코딩에서 UTF-8로 전환하지 않습니까? UTF-8의 어떤 문제 또는 단점으로 인해 사람들을 방해하고 있습니까?

편집 : W3C는 유니 코드에 대한 알려진 문제를 나열 합니다. 이유가 원인 일 수 있습니까?


실제로 점점 더 인기있는 사이트는 UTF-8로되어 있으며, 예를 들어 ニ コ ニ コ 動画 및 は て な
Ken Li

8
왜 모두가 ISO-8851-1에서 UTF-8로 전환하지 않습니까?
ysdx

1
여기 에서 SHIFT-JIS-> UTF-8 변환은 무손실이 아니라고 언급되어 있는데, 이는 이미 사용중인 SHIFT-JIS를 계속 사용하는 주요 이유입니다. 나는 ostensible factoid가 놀라운 것을 발견했습니다. 그래서 나는 여기에있는 답변 중 하나가 더 자세하게 설명하거나 적어도 주장에 대한 출처를 제공하기를 희망했지만 그중 어느 것도 그렇게하지 않았습니다.
Kyle Strand


@LudwigSchulze 감사합니다. 아직도 세부 사항은 아니지만 최소한 공식 소스는 ...
Kyle Strand

답변:


28

한마디로 : 레거시.

Shift-JIS 및 기타 인코딩은 유니 코드를 사용할 수있게되기 전에 사용되었습니다. 이는 일본어를 전혀 인코딩 할 수있는 유일한 방법 이었기 때문입니다. 회사는 Shift-JIS 만 지원하는 인프라에 투자했습니다. 해당 인프라가 이제 유니 코드를 지원하더라도 인코딩 작업 보다 손대지 않는 것부터 여러 가지 이유로 Shift-JIS가 여전히 고집되어 있습니까? 모든 기존 문서마이그레이션하는 데 너무 많은 비용이 듭니다 .

같은 이유로 ASCII 또는 latin-1을 사용하는 많은 서구 회사가 있지만 문제를 일으키지 않기 때문에 아무도 알지 못합니다.


8
일본 소프트웨어 산업은 새로운 소프트웨어 / 표준을 사용하는 데있어 먼지보다 느립니다.
Mark Hosang

2
@Mark Truer의 말이 필요했습니다! (나는 ... 일본어 IT에 /에서 일하고 있어요 -_- ;;)
deceze

5
그러나 서구 기업들은 레거시 소프트웨어가 1 바이트 = 1 문자라는 하드 코딩 된 가정으로 가득 차서, MBCS 클린 코드를 오랫동안 작성해 온 아시아 인에 비해 UTF-8 로의 전환이 더 어렵다는 변명을합니다.
dan04

@MarkHosang 본인의 진술이 100 % 정확함을 확인합니다 (도쿄에있는 일본 회사에서 근무)
Hassan Tareq

9

UTF-8 또는 다른 유니 코드 표현을 스크립팅 언어 Ruby의 기본 문자 인코딩으로 만들지 않았기 때문에 주로 일본에서 개발되었습니다.

  • 이유 1 : 한 통일 . 문자 세트 (여기에서 "알파벳"이 올바른지 확실하지 않음)는 중국, 한국 및 일본이 모두 관련되어 있으며 세부 사항에 대해 확실하지 않은 공통 역사에서 진화했습니다. 유니 코드 컨소시엄은 모양이 3 개 언어 모두 다르더라도 동일한 문자의 모든 변형 (중국어, 일본어 및 한국어)을 인코딩하기 위해 단일 유니 코드 코드 포인트 만 낭비하기로 결정했습니다. 그 이유는 텍스트를 표시하는 데 사용되는 글꼴로 모양을 결정해야한다는 것입니다.

분명히,이 추론은 라틴어 알파벳이 그리스어 알파벳에서 개발 되었기 때문에 그리스어 알파에 대한 단일 코드 포인트만으로 충분하다고 영어 독자들에게 논쟁하는 것처럼 일본 사용자들에게도 말도 안되는 것으로 인식되고있다. α "와 라틴어"a "를 사용하고 글꼴을 사용하여 모양을 결정합니다. ( "β"= "b", "γ"= "g"등과 동일)

(이 경우 stackexchange에 그리스 문자를 포함시킬 수 없습니다.)

  • 이유 2 : 비효율적 인 문자 변환. 문자를 유니 코드에서 레거시 일본어 인코딩으로 변환하거나 다시 변환하려면 테이블이 필요합니다. 즉, 유니 코드 코드 포인트 값에서 레거시 코드 포인트 값으로 또는 그 반대로 간단한 계산이 없습니다. 또한 한 인코딩의 모든 코드 포인트가 다른 인코딩에서 고유 한 표현을 갖지는 않기 때문에 변환 할 때 일부 정보가 손실됩니다.

내가 더 이상 기억하지 못하는 더 많은 이유가 주어 졌을 것입니다.


2.0에서 루비가 기본값으로 UTF-8을 채택한 것으로 보입니다. 그러나 한 통일 은 유니 코드 세계에서 정말 중요한 주름 (그리고 논란의 여지가있는 문제 ) 인 것 같습니다.
Kyle Strand

다음은 한 통일 문제에 대한 위키피디아 기사입니다. en.wikipedia.org/wiki/Han_unification 실제로 유효한 문제인 것 같습니다. 또한 날짜 손실이 좋은 이유입니다.
spbnick

8

deceze의 대답 은 진실의 매우 강력한 요소를 가지고 있지만 Shift-JIS와 다른 언어가 여전히 사용되는 또 다른 이유가 있습니다. UTF-8은 대부분 CJK 세트의 일부 언어에서 끔찍하게 비효율적입니다. Shift-JIS는 2 바이트 폭 인코딩 인 IIRC이며, UTF-8은 일반적으로 CJK 및 기타와의 인코딩에서 3 바이트, 때로는 4 바이트입니다.


7
이것이 사실이지만 Shift-JIS만큼 효율적일 수있는 UTF-16의 대안이 항상 있습니다. 또한 다른 인코딩을 다루는 두통이 오늘날과 나이의 크기가 약간 증가한 것보다 훨씬 크다고 주장합니다. 달리 말하면, 나는 효율성의 인수 들어 본 적이없는 위해 아직도 그것을 사용하는 사람에 의해가 Shift-JIS. ;-)
deceze

5
그러나 효율 문제가 나무 늘보와 관성의 변명으로 사용되는 것을 들었습니다.
저의 정확한 의견 JUIN

1
UTF-16은 기본 ASCII 문자 (예 : HTML에 상당한 숫자가있는 숫자)를 두 배로 만듭니다. 내가 알기로, 이것은 실제로 일본어 웹 페이지의 UTF-8보다 UTF-16을 더 나쁘게 만듭니다.
Random832

2
@JUST 나의 올바른 의견 : "소스보기"또는 이와 동등한 것을 시도하십시오. 모든 실제 텍스트가 일본어로되어 있다고 가정하면 영어에서 파생 된 많은 키워드 등이 ASCII로 표시 될 수 있습니다.
David Thornley

4
이것은 우리가 나중에 찾게하는 이유처럼 들린다 . 나는 효율성이 현재 상태와 전혀 관련이 없다고 확신합니다. 나에게 그것은 단지 관성과 유산입니다. 실제로 나는 또한 일본 프로그래머가 생성 한 대부분의 코드가 다른 일본인을위한 것이므로 유니 코드와 같은 것을 사용할 필요조차 없다고 생각합니다.
Julien Guertault 2018 년

2

주요 이유 중 문자열 크기 / 메모리 사용량을 계산하십시오.

UTF-8에서 동아시아 언어는 종종 문자에 3 바이트 이상이 필요합니다. 평균적으로 UTF-16을 사용할 때보 다 50 % 더 많은 메모리 가 필요 합니다. 후자는 이미 기본 인코딩보다 효율성이 떨어집니다.

다른 주된 이유는기만으로 지적 된 레거시입니다.


2

다른 사람들이 말했듯이 레거시 및 저장소 크기는 하나 더 있습니다. 가타카나 문자.

Shift-JIS에서 가타카나 문자를 나타내는 데 1 바이트 만 소요되므로 가타카나를 포함한 일본어 텍스트는 문자 당 2 바이트 미만 (50/50 혼합의 경우 1.5)을 사용하므로 UTF--16 (2 바이트)보다 다소 효율적입니다. / char), UTF-8 (3 바이트 / char)보다 훨씬 효율적입니다.

저렴한 스토리지는이 문제를 훨씬 더 작은 문제로 만들었을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.