2012-12-02 28 views
0

这段代码在开发环境中工作正常,但不适用于生产环境。java normalizer在不同的机器上表现不同

import java.text.Normalizer; 
public class TestNorm { 
     public static void main(String args[]) { 
       String s = ""; 

       for (String s1: args) { 
         s = s + " " + s1; 
       } 

       System.out.println(Normalizer.normalize(s.toLowerCase(), Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "").replaceAll("[^\\p{Alnum}]+", "-").replaceAll("^[^a-z0-9]+", "").replaceAll("[^a-z0-9]+$", "")); 
     } 
} 

(空白)

DevEnv$ java TestNorm hellö 
> hello 

(空白)

ProdEnv$ java TestNorm hellö 
> hell 

我缺少什么?为什么我没有得到相同的Normalizer结果; “你好”?

可能是一个有用的信息,以了解

DevEnv$ java -version 
java version "1.6.0_37" 
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909) 
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode) 

(空白)

ProdEnv$ java -version 
java version "1.7.0_01" 
Java(TM) SE Runtime Environment (build 1.7.0_01-b08) 
Java HotSpot(TM) Client VM (build 21.1-b02, mixed mode, sharing) 
+0

不同的区域? –

+0

@DanielFischer最有可能。仍然不知道如何修理或修理什么 –

回答

0

好吧,我发现所有谁具有相同的问题的解决方案!

我看着这个网站; http://perlgeek.de/en/article/set-up-a-clean-utf8-environment

执行此;

export LC_ALL=en_US.UTF-8 
export LANG=en_US.UTF-8 
export LANGUAGE=en_US.UTF-8 

以及与此

perl -Mcharnames=:full -CS -wle 'print "\N{EURO SIGN}"' 

输出测试应该是 “€”

我上面写的也可以工作的代码...

相关问题