2010-06-29 13 views

risposta

6

A)
Sì. Tutti i caratteri rappresentati in unicode hanno un indice numerico univoco chiamato codepoint.

Se si conosce l'intervallo di codepoint per il cinese semplificato e si sa come ottenere il codepoint unicode di un determinato carattere, un semplice confronto indicherà se il carattere specificato si trova nell'intervallo cinese semplificato.

una domanda esistente ha una soluzione per ottenere il codepoint Unicode per un personaggio in PHP:
How to get code point number for a given character in a utf-8 string?

In Java, il java.lang statica. Il metodo Character::codePointAt() ti darà quello che ti serve.

B)
Conversione di un carattere cinese semplificato, o stringa, ad Pinyin molto probabilmente richiederebbe una forma di mappa con il punto di codice unicode come chiave e il corrispondente pinyin come valore.

Un esempio di questo in PHP è mostrato in http://kingphp.com/108.html.

Una semplice ricerca su Google per [java pinyin] rivela una serie di opzioni, due delle quali sono cinesi per pinyin librerie a http://kiang.org/jordan/software/pinyinime/ e http://pinyin4j.sourceforge.net/.

+0

Thanls per tutto questo, lo prendo da qui;) era googling per pinyin php e i risultati non erano poi così grandi, ma ho appena aggiunto il tag java perché ho appena iniziato a imparare, quindi non ho pensato di google. – Moak

+0

il codice kingphp.com è un po 'infarcito, quindi potresti prendere in considerazione la possibilità di postare un link? – think123

+0

@ think123: Non sono sicuro di cosa intendi con questo. Ho pubblicato un collegamento a un esempio per dimostrare che è possibile ottenere ciò che deve essere raggiunto. Il collegamento lo mostra ancora. –

0

Se si utilizza UTF-8 per interpretare i file e le chiamate al DB, credo che un semplice

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

dovrebbe fare il trucco.

Da dove prendi le stringhe?

+0

scusa se non è chiaro, ho bisogno del pinyin di qualsiasi carattere cinese. In questo caso tradurre i nomi. – Moak

4

Bit in ritardo, ma risolto!

<?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> 

se si mette questo a http://www.example.com/foo.php, digitare http://www.example.com/foo.php?phrase=你好, e vi darà il pinyin.

Testato e funziona.

Problemi correlati