2012-07-19 129 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语言环境。