개발자 도구 · 텍스트 비교
대소문자 접기는 보기보다 어렵습니다: 유니코드에서 '대소문자 무시'가 의미하는 것
· 배경
텍스트 비교 유니코드 대소문자 구분
점이 없는 i, 샤프 s 및 마지막 시그마를 예로 들어 ASCII에서는 대소문자 무시가 쉽지 않고 유니코드에서는 미묘한 이유와 대소문자를 구분하지 않는 비교에서 이것이 무엇을 의미하는지 설명합니다.
이스탄불의 두 철자가 일치하지 않는 이유 — 터키어 점으로 구분된 대문자 I와 관련된 실제 불일치로 시작되어 영어권 개발자를 놀라게 합니다.
대소문자를 구분하지 않는 비교는 식별자, 스크립트 및 언어 규칙이 일치하지 않을 때까지 보편적으로 들립니다. ToolAcre의 실제 규칙은 구체적입니다. 대소문자 무시를 선택하면 공백 변환 후 각 라인 키가 JavaScript `toLowerCase()`를 수신합니다. 그런 다음 엄격한 동등성은 결과 문자열을 비교합니다.
해당 메커니즘은 제목이나 일반 레이블에 유용하지만 이름이 로케일 인식 언어적 동등성으로 확장되어서는 안 됩니다. UI는 로케일을 수집하지 않으며 함수는 아무것도 제공하지 않습니다. 독자는 사례에 신원이나 언어적 의미가 있을 때마다 결과를 검사해야 합니다.
ASCII 케이스: 단일 비트 — 초기 도구의 대소문자 무시 플래그를 쉽게 만든 간단한 대문자 및 소문자 관계를 설명합니다.
통합 문서에서는 ASCII 대소문자를 단일 비트 관계로 설명하지만 소스는 비트 산술 또는 ASCII 전용 분기를 구현하지 않습니다. 전체 줄에서 플랫폼 문자열 메서드를 호출합니다. 기록 인코딩 설명에는 이 저장소 이외의 소스가 필요합니다.
기본 라틴어 텍스트의 경우 `Hello` 및 `hello`은 테스트 모음에서 입증된 것처럼 옵션에서 동일해집니다. 해당 테스트는 모든 유니코드 매핑이 아닌 하나의 동작을 설정합니다. 지나가는 영어 예제를 모든 스크립트에 대한 약속으로 바꾸지 마십시오.
구현은 JavaScript를LowerCase로 호출합니다. ASCII 특정 비트 작업을 노출하지 않습니다.
유니코드 대소문자 접기는 자체 데이터 및 상태 규칙이 있는 비교 개념입니다. ToolAcre는 명명된 접기 라이브러리를 호출하거나 문자열을 정규화하거나 유니코드 버전을 문서화하지 않습니다. 이 구현을 "풀 케이스 폴딩"이라고 부르면 기계가 없다고 주장하게 됩니다.
방어 가능한 설명은 현재 JavaScript 엔진을 사용한 소문자 키 비교입니다. 표시를 위해 원래 행은 변경되지 않은 상태로 유지됩니다. 낮아진 문자열의 길이나 코드 포인트가 다른 경우 해당 줄은 강제 일치가 아닌 제거 및 추가로 유지됩니다.
ToolAcre는 문서화된 유니코드 대소문자 접기 작업이 아닌 소문자 매핑을 수행합니다.
개요 이름은 터키어 I, 독일어 샤프 s 및 그리스 시그마입니다. 이는 외부 소스 유니코드 문서에 대한 합법적인 주제이지만 이 저장소에는 이에 대한 결과를 보장하는 테이블이나 테스트가 포함되어 있지 않습니다. 이 문서에서는 의도적으로 정확한 매핑 선언을 피합니다.
대상 환경에서 실제 값을 테스트하고 신원 규칙을 구축하기 전에 권위 있는 유니코드 및 로케일 문서를 참조하십시오. 시각적 검토를 위한 편의 확인란은 사용자 이름 비교기, 보안 경계 또는 다국어 대조 엔진이 되어서는 안 됩니다.
명명된 언어 예외에는 외부 유니코드 소스가 필요하며 여기서는 보장되지 않습니다.
`Release Notes`을(를) `release notes`과 비교하세요. 엄격 모드에서는 교체를 보고합니다. 대소문자 무시는 동일한 행을 보고하고 원래 왼쪽 텍스트를 표시합니다. 구두점이나 악센트 변경을 추가하고 소문자만으로는 모든 차이가 지워지지 않는다는 점을 관찰하세요.
이 제어된 예는 스크립트별 동작을 해결하는 척하지 않고 옵션을 보여줍니다. 용어집을 검토할 때 먼저 엄격 모드를 실행하고 사례 전용 행을 기록하세요. 나중에 옵션을 전환하여 철자나 구두점 변경에서 대문자 사용 노이즈를 분리하세요.
실제 예: 모든 스크립트를 일반화하지 않고 일반적인 라틴어 변형을 테스트합니다.
로케일 선택기가 UI에 나타나지 않으며 `toLowerCase`은 언어 매개변수를 수신하지 않습니다. 결과적으로 문서의 의도된 언어에 관계없이 동일한 변환 코드가 실행됩니다. 경로는 해당 회선이 터키어, 독일어, 그리스어 또는 프로그래밍 식별자인지 알지 못합니다.
그 부재는 실질적인 경고입니다. 로캘 인식 검색, 정렬 또는 ID의 경우 해당 요구 사항을 중심으로 설계된 API를 사용하고 해당 동작을 적절한 데이터로 고정하세요. 텍스트 diff는 전역 명명 정책이 아닌 두 문자열에 대한 검토자의 렌즈입니다.
이 비교 옵션에서는 로케일 매개변수가 제공되지 않습니다.
이 문서에서는 비라틴어 동등성, 정규화, 대조 또는 혼동 가능한 문자에 대한 보안을 약속하지 않습니다. 소문자로는 두 이름이 동일한 사람, 제품 또는 파일 시스템 개체를 나타내는지 여부를 대답할 수 없습니다. 이러한 시스템은 완전히 다른 사례 규칙을 적용할 수 있습니다.
공백 무시는 대소문자와 결합될 수 있지만 그렇게 하면 사라지는 내용이 넓어집니다. 한 번에 하나의 옵션을 전환하여 원인을 식별하십시오. 두 가지 모두에서 동일한 결과는 변환된 라인 키가 일치한다는 것을 나타냅니다. 바이트 동일성이나 의미론에 대해서는 아무 것도 말하지 않습니다.
요점: 정확성이 아닌 편의를 위해 대소문자 무시 — ToolAcre의 텍스트 비교 옵션이 적절한 시기와 결과를 검사해야 하는 시기를 요약합니다.
대문자 사용이 프레젠테이션에 방해가 되는 것으로 알려진 경우 편의를 위해 대소문자 무시를 사용하십시오. 코드, 경로, 제품 이름 및 대소문자로 값을 구분할 수 있는 모든 도메인에 대해 엄격 모드를 유지하세요. 느슨한 결과를 유일한 기록으로 만드는 대신 두 출력을 모두 검토하십시오.
ToolAcre의 구현은 선택적 공백 처리, JavaScript 소문자 매핑, 엄격한 라인 키 동일성을 정확하게 기술할 수 있을 만큼 투명합니다. 그 겸손한 주장은 소스가 지원할 수 없는 광범위한 유니코드 약속보다 더 유용합니다.