2012-07-19 71 views
2

我用的boost ::區域:: to_upper做具體的語言環境上,外殼按照升壓現場試驗頁http://www.boost.org/doc/libs/1_50_0/libs/locale/doc/html/conversions.html與提升區域設置區域設置特定的to_lower問題

的文字,說明我應該能夠在'grüßEN'上使用boost :: locale :: to_upper並得到結果'GRÜSSEN' - 這是正確的語言環境特定的大寫版本(所以我相信)。

在我的測試版本中,我得到'GRÜßEN'而不是'GRÜSSEN'。

我的測試代碼如下(我使用utf8cpp檢查我的字符串實際上是UTF8):

   boost::locale::generator gen;          
       std::locale loc= gen("de_DE.UTF-8"); 

       std::locale::global(loc); 
       cout.imbue(loc); 

       string s = "grüßEN"; 
       if (utf8::is_valid(s.begin(), s.end())){ 
        std::cout << s << " U= "<< boost::locale::to_upper(s) << std::endl; 
       } 

這是OSX(10.7.4)使用的Xcode(4.1)。我已經安裝了ICU(49_1_2),其建議選項爲-DU_USING_ICU_NAMESPACE = 0-DU_CHARSET_IS_UTF8 = 1。 ICU是在/ usr /本地/包括/ Unicode和在/usr/local/lib/libicu*.*

庫我建的boost ::區域從1_48套件這樣的:

./bjam boost.locale.iconv=off -sICU_PATH=/usr/local --with-locale stage 

和建設時,報告:

Performing configuration checks 

- icu      : yes 

Component configuration: 

- chrono     : not building 
- date_time    : not building 
- exception    : not building 
- filesystem    : not building 
- graph     : not building 
- graph_parallel   : not building 
- iostreams    : not building 
- locale     : building 
- math      : not building 
- mpi      : not building 
- program_options   : not building 
- python     : not building 
- random     : not building 
- regex     : not building 
- serialization   : not building 
- signals     : not building 
- system     : not building 
- test      : not building 
- thread     : not building 
- timer     : not building 
- wave      : not building 

...patience... 
...patience... 
...found 1850 targets... 
...updating 25 targets... 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv- off/threading-multi/encoding/codepage.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/boundary.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/codecvt.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/collator.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/conversion.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/date_time.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/formatter.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/icu_backend.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/numeric.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/time_zone.o 
darwin.link.dll bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/libboost_locale.dylib 
common.copy stage/lib/libboost_locale.dylib  
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv- off/link-static/threading-multi/encoding/codepage.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/boundary.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/codecvt.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/collator.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/conversion.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/date_time.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/formatter.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/icu_backend.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/numeric.o 
darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/time_zone.o 
darwin.archive bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/libboost_locale.a 
/usr/bin/libtool: warning same member name (codecvt.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link- static/threading-multi/std/codecvt.o and: bin.v2/libs/locale/build/darwin- 4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/codecvt.o (due to use of basename, truncation, blank padding or duplicate input files) 
/usr/bin/libtool: warning same member name (codecvt.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/codecvt.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/codecvt.o (due to use of basename, truncation, blank padding or duplicate input files) 
/usr/bin/libtool: warning same member name (collate.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/std/collate.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/collate.o (due to use of basename, truncation, blank padding or duplicate input files) 
/usr/bin/libtool: warning same member name (converter.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/std/converter.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/converter.o (due to use of basename, truncation, blank padding or duplicate input files) 
/usr/bin/libtool: warning same member name (date_time.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/date_time.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/shared/date_time.o (due to use of basename, truncation, blank padding or duplicate input files) 
/usr/bin/libtool: warning same member name (numeric.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/numeric.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/numeric.o (due to use of basename, truncation, blank padding or duplicate input files) 
/usr/bin/libtool: warning same member name (numeric.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/numeric.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/std/numeric.o (due to use of basename, truncation, blank padding or duplicate input files) 
common.copy stage/lib/libboost_locale.a 
...updated 25 targets... 

https://svn.boost.org/trac/boost/ticket/6424,警告可以忽略 我從舞臺/庫複製建庫到/ usr /本地/庫(或沒有人知道更好嗎?)。

因此,據我所知,它是正確建立對ICU。我的測試代碼確實需要我鏈接到libiconv - 我會認爲這不需要,因爲我關閉了構建中的圖標?

任何人都可以爲我提供一些有關正在發生的事情的信息/我做錯了什麼,以及爲什麼我沒有按照記錄得到預期的行爲 - 或者至少有些事情要嘗試?

歡呼

克里斯

+0

在Ubuntu Linux 10.04 LTE上使用gcc-4.4.3和boost-1.49適合我(也就是說,我得到正確的GRÜSSEN結果)。土耳其語I /İ也可以。我沒有安裝系統範圍的德語或土耳其語區域設置。 – 2012-07-19 14:26:37

回答

0

所以XCODE墜毀,機上我(因爲它似乎經常這樣做),一旦我重新啓動它,並重新建造的項目,它要求ICU庫和不再需要iconv庫 - 即如預期的那樣。 我打算把這個粉筆寫到我認爲的XCODE voodoo。我會留下這個問題,因爲它至少包括如何在OSX上搭建ICU的boost語言環境。