문자열 분류기를 속이는 데 사용할 수 있는 유니코드 문자는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/151844

  •  02-07-2019
  •  | 
  •  

문제

유니코드에는 너비가 0인 일련의 정렬 문자가 없기 때문에 문자 값에 따라 자동으로 정렬되는 목록에서 특정 순서를 강제할 수 있는 해당 문자를 결정해야 합니다.불행히도 목록 항목은 알파벳 순서가 아니며 정렬 결과가 원하는 결과와 일치하는지 확인하기 위해 눈에 보이는 문자를 접두어로 붙이는 것도 허용되지 않습니다.

일반 라틴 알파벳 텍스트 앞에 삽입할 수 있고 표시되지 않지만 필요한 방식으로 정렬을 "스파이크"할 수 있는 유니코드 문자는 무엇입니까?

(그런데 이 작업은 Drupal 5에서 사용자 프로필 목록 필드를 사용하여 수행됩니다.그것을 어휘/카테고리로 바꾸자고 제안하지 마세요.)

도움이 되었습니까?

해결책

제로 폭 공간 (u+200b)은 아마도 원하는 것을해야합니다. 유니 코드 사양에서 :

제로 폭 공간. U+200B 제로 너비 공간은 너비가 없다는 점을 제외하고 라인 브레이크 기회를 나타냅니다. 제로 폭 공간 문자는 태국어, 크메르, 일본어와 같은 라인 브레이크 기회를 나타내는 눈에 보이는 단어 간격이없는 언어로 사용됩니다.

대부분의 글꼴에 있어야하지만 ymmv.

다른 팁

개인적으로 저는 기본/보조 정렬 키를 사용하는 것을 선호합니다.덜 복잡하고 일반적인 SQL 쿼리(ORDER BY column_a,column_b)에서 구현하기 쉽습니다. 추가하도록 수정했습니다:Php에서는 다음을 사용할 수 있습니다. usort(array, comparisonFunction) SQL을 사용하여 트릭을 수행할 수 없는 경우 정렬을 위한 추가 논리를 추가하는 사용자 정의 비교 기능을 사용합니다.

그러나 작업할 열이 하나뿐이고 수정할 수 없는 경우 정렬을 위해 밑줄과 같이 가능성이 없는 특정 문자 수를 접두사로 붙인 다음 표시하기 직전에 해당 문자를 제거하세요.(정규 표현식 대체 또는 이와 유사한 사용)

유니코드 기반 핵은 사용되는 글꼴, 사용 중인 로케일의 대조/정렬 순서에 따라 크게 달라지며 제어할 수 없는 클라이언트(다른 브라우저, 다른 oses, 다른 클라이언트 로케일)에 바람직하지 않은 부작용을 일으킬 수 있습니다. .대부분의 "인쇄할 수 없는" 문자는 해당 문자를 지원하지 않는 시스템에 표시될 때 "알 수 없는 문자"를 생성하며 이는 일반적으로 빈 사각형처럼 보입니다.아랍어와 같은 언어에는 너비가 0인 문자가 사용되지만 매우 비뚤어진 유니코드를 지원하는 응용 프로그램을 제외하고는 정렬에 영향을 주지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top