2010-06-29 5 views

Antwort

6

A)
Ja. Alle in Unicode dargestellten Zeichen haben einen eindeutigen numerischen Index, der als Codepunkt bezeichnet wird.

Wenn Sie den Bereich der Codepoints für vereinfachtes Chinesisch kennen und wissen, wie Sie den Unicode-Codepunkt eines bestimmten Zeichens erhalten, wird Ihnen ein einfacher Vergleich sagen, ob das Zeichen im vereinfachten chinesischen Bereich liegt.

Eine bestehende Frage hat eine Lösung, die den Unicode-Codepoint in PHP für ein Zeichen für das Erhalten:
How to get code point number for a given character in a utf-8 string?

In Java, den statischen java.lang. Character::codePointAt() Methode wird Ihnen geben, was Sie brauchen.

B)
ein vereinfachtes Chinesisch Zeichen Konvertieren oder eine Zeichenfolge, um Pinyin würden die meisten wahrscheinlich erfordern irgendeine Form von Karte mit dem Unicode-Codepunkt als der Schlüssel und der entsprechenden Pinyin als Wert.

Ein Beispiel hierfür in PHP ist bei http://kingphp.com/108.html gezeigt.

Eine einfache Google-Suche nach [Java Pinyin] zeigt eine Reihe von Optionen, von denen zwei zu Pinyin-Bibliotheken Chinesisch sind http://kiang.org/jordan/software/pinyinime/ und http://pinyin4j.sourceforge.net/.

+0

Thanks für all das, ich werde es von hier nehmen;) googelte für Pinyin PHP und die Ergebnisse waren nicht so toll, aber nur die Java-Tag hinzugefügt, weil ich gerade angefangen habe zu lernen, also habe ich nicht daran gedacht, es zu googeln. – Moak

+0

Der kingphp.com-Code ist ein wenig verstopft, also könntest du einen Link erneut schreiben? – think123

+0

@ think123: Ich bin mir nicht sicher, was du damit meinst. Ich habe einen Link zu einem Beispiel gepostet, um zu zeigen, dass das erreicht werden kann, was erreicht werden muss. Der Link zeigt dies noch an. –

0

Wenn Sie utf-8 verwenden, um Ihre Dateien und ruft die DB zu interpretieren, ich denke, eine einfache

$new_text = preg_replace(array('/你好/',...), array('nǐhǎo',...), $old_text); 

den Trick tun sollten.

Wo bekommen Sie Ihre Saite her?

+0

Entschuldigung, wenn es unklar war, brauche ich die Pinyin von chinesischen Schriftzeichen. In diesem Fall um Namen zu übersetzen. – Moak

4

Bis spät, aber gelöst!

<?php 

function curl($url,$params = array(),$is_coockie_set = false) 
{ 

if(!$is_coockie_set){ 
/* STEP 1. let¡¯s create a cookie file */ 
$ckfile = tempnam ("/tmp", "CURLCOOKIE"); 

/* STEP 2. visit the homepage to set the cookie properly */ 
$ch = curl_init ($url); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 
} 

$str = ''; $str_arr= array(); 
foreach($params as $key => $value) 
{ 
$str_arr[] = urlencode($key)."=".urlencode($value); 
} 
if(!empty($str_arr)) 
$str = '?'.implode('&',$str_arr); 

/* STEP 3. visit cookiepage.php */ 

$Url = $url.$str; 

$ch = curl_init ($Url); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 

$output = curl_exec ($ch); 
return $output; 
} 

function Translate($word,$from,$to) 
{ 
$word = urlencode($word); 
$url = 'http://translate.google.com/translate_a/t?client=t&text='.$word.'&hl=' . $from . '&sl=' . $from . '&tl=' . $to . '&ie=UTF-8&oe=UTF-8&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1'; 

$name_en = curl($url); 
$name_en = explode('"',$name_en); 
return $name_en[1]; 
} 
function pinyin($word) 
{ 
$word = urlencode($word); 
$url = 'http://translate.google.com/translate_a/t?client=t&text='.$word.'&hl=zh&sl=zh&tl=zh&ie=UTF-8&oe=UTF-8&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1'; 

$name_en = curl($url); 
$name_en = explode('"',$name_en); 
return str_replace(" ", "", strtolower($name_en[5])); 
} 
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
</head> 
<body> 
<?php 
echo pinyin(urldecode($_GET['phrase'])); 
?> 
</body> 
</html> 

Wenn Sie setzen diese bei http://www.example.com/foo.php, geben Sie in http://www.example.com/foo.php?phrase=你好, und es wird Ihnen die Pinyin geben.

Getestet, und funktioniert.

Verwandte Themen