한국어

텍스트 및 일상 도구 · 텍스트 도구 키트

대문자가 A–Z가 아닌 이유: ß, 터키어 i 및 유니코드 대소문자 매핑

· 배경

유니코드 대소문자 변환 현지화

대문자 및 소문자 변환을 통과하는 독일어, 터키어 및 그리스 문자
원본 ToolAcre 벡터 일러스트레이션

잘 알려진 예외(ß가 SS가 됨, 터키어 점이 없는 ı 및 그리스어 최종 시그마)를 제외하고 문자 산술이 아닌 유니코드 테이블로 대문자와 소문자를 정의하는 이유와 이것이 브라우저 기반 변환기에 대한 의미를 설명합니다.

STRASSE 및 늘어나는 문자 — 대문자 'straße'가 문자 수를 변경하는 이유

`straße`을 변환기에 붙여넣고 대문자로 표시합니다. JavaScript는 `STRASSE`을 생성합니다. 여기에 사용된 기본 작업에 의해 소문자 샤프 s가 두 개의 대문자에 매핑되기 때문에 결과가 눈에 띄게 길어졌습니다. 따라서 대소문자 변환이 문자 수를 유지한다고 가정하는 유효성 검사 규칙은 유효한 독일어 텍스트를 거부하거나 자르거나 잘못 정렬할 수 있습니다.

역방향은 소스를 재구성하지 않습니다. `STRASSE`을 소문자로 바꾸면 `straße`가 아닌 `strasse`이 생성됩니다. 왜냐하면 대문자 시퀀스도 일반적인 s 문자 쌍을 나타내기 때문입니다. 결과적으로 대소문자 변환은 가역적 인코딩이 아닌 텍스트 변환입니다. 신원, 표시 충실도 또는 정확한 비교가 중요할 때마다 원래 철자를 유지하십시오.

수식이 아닌 테이블로서의 대소문자 매핑 — 유니코드가 모든 대소문자에 대한 단순 및 전체 대소문자 매핑을 정의하는 방법

ASCII 코드는 종종 편리한 패턴을 가르칩니다. 즉, 대문자와 소문자 라틴 문자는 예측 가능한 범위를 차지하므로 이를 연결하는 숫자 오프셋이 나타납니다. 텍스트에 해당 범위 밖의 문자가 포함되거나 매핑이 둘 이상의 출력 문자를 생성하면 해당 모델은 더 이상 유용하지 않습니다. 따라서 변환기는 문자 산술을 수행하는 대신 JavaScript 문자열 케이스 메소드를 호출합니다.

저장소는 유니코드 매핑 테이블을 노출하거나 단순 매핑과 전체 매핑을 구별하지 않으므로 이러한 세부 정보가 이 도구의 기능으로 표시되어서는 안 됩니다. 관찰 가능한 계약은 더 좁습니다. `toUpperCase()` 및 `toLowerCase()`은 브라우저 엔진에 위임합니다. 변환된 텍스트가 실제로 소비되는 환경에서 결과를 테스트해야 합니다.

대소문자 변환은 이 도구에 의해 노출된 산술이나 테이블이 아닌 엔진에서 제공하는 문자 매핑을 사용합니다.

길이 변경 결과는 입력 옆의 카운터 이상의 영향을 미칩니다. 변환 전에 계산된 저장된 오프셋, 선택 범위, 강조 표시 및 커서 위치는 나중에 더 이상 의도한 텍스트를 가리키지 않을 수 있습니다. 입력 길이에서 출력 공간을 할당하거나 하나의 소스 문자가 항상 하나의 결과 문자에 해당한다고 가정하는 모든 작업 흐름에도 동일한 위험이 적용됩니다.

왕복은 특정 예가 동일한 표시 길이를 유지하는 경우에도 구별을 잃을 수도 있습니다. 여러 소스 철자가 하나의 대문자 형태로 수렴되어 원본을 선택할 수 있는 충분한 정보가 없이 소문자 작업을 수행할 수 있습니다. 손실이 허용되는 경우에만 변환된 값을 비교하십시오. 그렇지 않으면 원본을 보관하고 제품 요구 사항에 맞게 설계된 비교 전략을 사용하십시오.

길이 변경 매핑 및 다시 변환해도 항상 소스를 복원할 수 없는 이유

그리스 시그마는 다른 경고를 제공합니다. 소문자 그리스어는 단어의 위치에 따라 달라질 수 있는 시그마 형식을 사용하므로 대소문자 변경이 항상 하나의 분리된 문자로 결정될 수는 없습니다. JavaScript는 전체 문자열을 수신하므로 모든 대문자 시그마를 하나의 고정 문자로 바꾸는 대신 내장된 소문자 동작이 주변 텍스트를 고려할 수 있습니다.

단일 문자 샘플뿐만 아니라 완전한 단어 내에서 시그마를 테스트합니다. 구두점, 공백 및 단어 경계는 엔진이 평가하는 입력의 일부이며 이를 편집하면 소문자 결과가 변경될 수 있습니다. 현지화 검토의 경우 코드 포인트만 검사하는 대신 인터페이스에서 사용되는 전체 문구를 보존하고 해당 문구를 승인된 번역과 비교하세요.

그리스 시그마는 소문자는 주변 텍스트에 따라 달라질 수 있음을 보여줍니다.

터키어는 기본적이고 로케일 독립적인 대소문자 변환이 터키어 관련 동작으로 모델링되지 않는 방식으로 점으로 표시된 i와 점이 없는 i를 구별합니다. ToolAcre 구성은 해당 매핑이 로케일 독립적이며 터키어 점선 및 점이 없는 i는 특수한 경우가 아니라고 명시적으로 말합니다. 그러므로 그럴듯해 보이는 결과는 이름, 주소 또는 인터페이스 문자열이 터키어 독자를 위해 올바르게 변환되었다는 증거가 아닙니다.

실제적인 응답은 일반 변환 후에 대체 항목을 추가하지 않는 것입니다. 이러한 대체는 혼합 언어 텍스트를 손상시키고 여전히 문맥을 놓칠 수 있습니다. 로케일이 알려진 소프트웨어에서 로케일 인식 작업을 사용하고 해당 설정에서 터키어 또는 아제르바이잔어 콘텐츠를 검토하십시오. 이 변환기에서는 i 예제를 문서화된 제한 사항의 데모로 취급합니다.

터키어 점선 및 점이 없음 이 변환기가 제공하지 않는 로케일 인식 처리가 필요합니다.

ToolAcre는 전체 입력에서 해당 JavaScript 문자열 메서드를 호출하여 UPPER 및 Lower를 구현합니다. 로케일을 전달하거나, 언어 사전을 로드하거나, 서버측 변환을 요청하지 않습니다. 따라서 출력은 브라우저 엔진의 기본 사례 결과이며, 이는 일반적인 응용 프로그램 동작을 검사하는 데 유용하지만 언어별 입력 체계를 인증하는 데는 유용하지 않습니다.

버그를 재현할 때는 구별이 중요합니다. 대문자 사용이 잘못되었다고 보고하는 대신 정확한 소스 문자열, 선택한 변환 및 결과 문자열을 기록하십시오. 프로덕션 코드가 동일한 기본 JavaScript 메서드를 사용하는 경우 변환기는 간단한 비교를 제공합니다. 프로덕션에서 로캘 인식 API를 사용하는 경우 이 페이지를 일치시키는 것은 관련 승인 테스트가 아닙니다.

여기서 다루지 않는 내용 — 이중문자의 제목 대/소문자 구분 규칙 및 수도의 역사 ẞ

Title Case 버튼은 의도적으로 제한된 계약을 사용한 또 다른 변형입니다. 표시나 아포스트로피를 결합하여 일련의 문자를 찾고 첫 번째 문자를 대문자로 바꾸고 나머지는 소문자로 만듭니다. 언어 사전이나 스타일 가이드 예외가 없으므로 약어와 고유 명사는 변경될 수 있으며, `of` 및 `the`과 같은 작은 단어는 다른 단어처럼 대문자로 표시됩니다.

이 기사는 개요에서 제안한 대문자 s의 역사나 제목 대소문자 이중 문자에 대한 더 넓은 규칙에 의존하지 않습니다. 왜냐하면 둘 다 검사된 출처에 의해 확립되지 않았기 때문입니다. 이러한 주제는 독립적인 참고 자료로 가치가 있을 수 있지만 제공된 기능을 설명하지는 않습니다. 여기서 신뢰할 수 있는 지침은 변환된 모든 제목을 검토하고 의도적인 철자를 수동으로 복원하는 것입니다.

지원되지 않는 알파벳 기록이 없는 이 도구의 제목 케이스 동작

대소문자 변환기에서 세 가지 집중 검사를 시도해 보세요. 대문자 `straße`, 대문자 시그마가 포함된 그리스어 단어 소문자, 점선 및 점선 없는 i 샘플을 양방향으로 실행합니다. 영어로 예측하기보다는 실제 문자열을 관찰하세요. 그런 다음 실험 사이에 실행 취소를 사용하여 각 결과가 이전 손실 변환 대신 원본 텍스트에서 시작되도록 합니다.

더 넓은 교훈은 조작입니다. 대소문자 변환은 길이를 변경하고 구별을 축소하며 기본 조작이 알지 못하는 언어적 맥락에 따라 달라질 수 있습니다. 보편적인 현지화 정확성을 약속하는 것이 아니라 이러한 동작을 노출하기 위해 도구를 사용하십시오. 소스 텍스트를 보존하고, 완전한 실제 문구를 테스트하고, 언어별 결과가 필요할 때마다 로케일 인식 검토를 적용합니다.