문제

나는 여전히 노력하고 여부를 결정 내(가)프로젝트에 사용해야 한다 UTF-8 문자열(의 관점에서 구현되는 std::string 추가 UTF-8-특정 기능이 필요한 경우)또는 일부 16 비트열(로 구현되는 std::wstring).프로젝트는 프로그래밍 언어 및 환경(VB,그것은 모두의 조합).

거기에 몇 가지원/제약 사항이 있습니다.

  • 면 그것은 멋진 것 그것을 실행할 수 있는 제한된 하드웨어,같은 제한된 컴퓨터 메모리.
  • 내가 원하는 코드에서 실행하는 윈도우,맥,(있다면 자원을 허용)Linux.
  • 을 사용하는 것입니다 나의 GUI 층,그러나 내가 원하는 상호 작용하는 코드와 함께하는 툴킷에 국한 모서리의 코드 베이스(가 비 GUI 를 실행).
  • 나는 것과 같은 작업을 피하기 위해 두 개의 서로 다른 종류의 문자열 작업을 할 때 사이트에 표시할 텍스트와 함께 응용 프로그램의 데이터입니다.

현재,저는 작업 std::string,의 목적으로 UTF-8 을 사용하여 조작 기능을 때에만 필요합니다.그것은 필요한 메모리를 적게 될 것으로 보인 방향으로 많은 응용 프로그램이 어쨌든.

당신이 추천 16 비트 인코딩되는 하나: UTF-16? UCS-2?또 다른 하나는?

도움이 되었습니까?

해결책

나 UTF-16 의 어떤 종류를 위한 데이터 조작하고 UI.Mac OS X 와 Win32API 를 사용하 UTF-16,동일한 wxWidgets,Qt,ICU,집,및 다른 사람입니다.UTF-8 될 수 있습에 대한 더 나은 데이터 교환 및 저장합니다.보 http://unicode.org/notes/tn12/.

하지만,무엇을 선택한 이에 대한 std::string UTF-8"필요한 경우에만".

모든 방법으로 UTF-16,UTF-8,그러나 혼합되지 않고 일을 요구하는 문제입니다.

다른 팁

UTF-16 은 여전히 변의 길이 문자 인코딩(가 2 인 이상^16 유니코드 코드포인트),그래서 당신이 할 수 없다 O(1)문자열을 인덱싱 작업입니다.만약 당신이 하고 있는 많은 종류의 것은,당신은 아무것도 저장하 속도에서 이상 UTF-8 입니다.다른 한편으로는 경우에,당신의 텍스트를 포함한 많은 코드포인트에서 256-65535 범위,UTF-16 될 수 있는 실질적인 개선에서 크기입니다.UCS-2 은 변화에 UTF-16 고정 길이에서,비용을 금지하는 모든 코드포인트 보다 큰 2^16.

없이에 대해 더 알고 당신의 요구 사항,나 개인적으로 이동에 대한 UTF-8 입니다.그것은 가장 쉽게 거래에 대한 모든 이유 다른 사람이 이미 나열됩니다.

내가 못 찾았을 사용하는 이유는 무엇보다 다른 UTF-8 은 정직합니다.

당신이로 가는 것을 결정하는 경우에 UTF-8 인코딩을 확인,라이브러리: http://utfcpp.sourceforge.net/

그것은 만들 수 있습니다 당신의 삶을 훨씬 더 쉽습니다.

내가 실제로 쓰여 널리 사용되는 응용 프로그램(5million+용)그래서 모든 킬로바이트 사용을 추가,말 그대로 있습니다.그럼에도 불구하고,나는 단지를 wxString.나는 그것을 구성에서 파생되는 std::wstring,할 수 있도록 그들에게 전달하는 기능을 기대하 wstring const&.

참고는 std::wstring 은 기본 유니코드에 맥(no UTF-16 에 필요한 문자를 위 U+10000)및 따라서 그것은 사용하는 4 바이트/wchar_t.의 큰 장점이는 내가++얻을 당신은 다음 문을 만들어냅니다.On Win32 는 사실에만 99.9%의 경우입니다.연구원으로 프로그래머는 방법을 이해하게 될 것이 작은 99.9%입니다.

하지만 경우에 당신은 확신이 서지 않고,쓰 기능에 대한 std::string[UTF-8]고 std::wstring.그 2 개의 기능에 당신을 말할 것이는 방법은 정신입니다.

귀하의 디스크에 있는 형식으로 또 다른 문제입니다.휴대해야 하는 UTF-8 입니다.없 엔디안 관심사에 UTF-8 으며,토론을 통해 폭(2/4).이 때문에 많은 프로그램를 사용하는 것으로 나타납 UTF-8 입니다.

에 약간의 관련 사항은 읽어 보시기 바랍에 유니코드 문자열 comparisions 및 정상화.또는 당신과 같은 버그.순할 수 있는 두 개의 변수 föö 및 föö 에서만 서로 다른(보이지 않는)정규화.

MicroATX 꽤 많은 표준을 PC 마더보드 형식으로 가장할 수 있 4-8GB RAM.얘기하는 경우에 picoATX 어쩌면 당신은 제한 1-2GB RAM.그럼에도 그 많은 위한 개발환경 통합관리가 가능합니다.나는 여전히 충실 UTF-8 을 이유로 위에서 언급된,그러나 메모리를 할 수 없는 당신의 관심사입니다.

에서 무엇을 읽었는데,그것의 더 나은 사용하는 16 비트 인코딩을 내부적으로 하지 않으면 당신은 짧은 기억에.맞는 거의 모든 생활에서 언어 하나의 캐릭터

도에서 보기 ICU.만약 당신이 사용하지 않는 특정 STL 기능의 문자열을 사용하여,ICU 문자열 형식이 더 좋을 수 있습니다.

당신이 사용하여 고려 wxStrings?제가 기억하기로는 그들이 할 수 있는 utf-8 <->유니코드 변환 및 그것은 그것이 조금 더 쉽게 때 당신이 문자열을 전달하고 있습니다.

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