큰 코드 기반을 가진 기존 응용 프로그램에 UTF8에 대한 지원이 추가됩니다. 이 응용 프로그램은 boost::format()
을 사용하며 비 ASCII 문자로 된 출력이 제대로 정렬되지 않습니다. 특히 %{width}.{length}
지정자를 사용할 때 boost::format()
은 utf8 문자열로 "올바른 작업을 수행하지"않는 문자를 계산합니다. 문자열 길이 코드 (은 아마도string::size()
)를 utf8len()
또는 비슷한 것을 사용하여 변경할 수 있어야한다고 생각합니다. 이 경우 UTF-8 문자열로 boost :: format % s 지정자 사용
boost::format()
을 수정하는 것이 가능하다. 나는 다른 누군가가이 필요성을 뛰어 넘기를 바라고 있었고 가능한 해결책을 제시 할 수 있었다.
참고 : utf8과 함께 로케일을 사용할 때 일부 웹 페이지가 발견되었지만 대부분이 스트림의 utf8 및 UCS4와의 변환에 더 적합합니다.
'boost :: format()'은 문자 수를 계산할 때 _bytes_를 의미합니다. 그렇습니까? – cjm
유니 코드에서 "정렬"이란 무엇을 의미합니까? 그것은 근본적으로 유니 코드가 아닌 ASCII입니다. 예 : http://mothy.org/hacks/unicodewidth/UnicodeWidth.html. 아주 간단한 예를 들면 : "A". 아마 2 자 정도 여야합니다. 당신을 생각해보십시오, 그건 "A"가 아닙니다. 그것은 U + FF21, 전폭 라틴어 캐피탈 A. – MSalters
@cjm입니다. - 예, 바이트는 정확합니다. 논리적으로 인쇄 된 단위에서와 같이 문자가 아닌 "char"의 복수형과 같이 "chars"를 언급했지만. – Grognard61