2010-06-29 29 views
6

Có thể
A) tìm hiểu xem một nhân vật là người Trung Quốc (giản thể)
và trong trường hợp đó
B) lấy bính âm? ví dụ: 你好 => nǐhǎo
sử dụng java hoặc php?Nhận ra một nhân vật là người Trung Quốc và nhận được ngữ âm "bính âm" của Trung Quốc từ các ký tự đơn giản?

Cheers

+0

Bạn có thể muốn xem câu trả lời của tôi. Tôi hoàn toàn giải quyết nó bằng cách sử dụng php. – think123

Trả lời

6

A)
Yes. Tất cả các ký tự được biểu thị bằng unicode đều có chỉ số số duy nhất được gọi là mã số .

Nếu bạn biết phạm vi của codepoints cho tiếng Trung giản thể và bạn biết làm thế nào để có được codicoint unicode của một ký tự, một so sánh đơn giản sẽ cho bạn biết liệu ký tự đó có nằm trong phạm vi Trung Quốc đơn giản hay không.

Một câu hỏi hiện có một giải pháp để nhận được điểm mã unicode cho một nhân vật trong PHP:
How to get code point number for a given character in a utf-8 string?

Trong Java, java.lang tĩnh. Phương pháp Character::codePointAt() sẽ cung cấp cho bạn những gì bạn cần.

B)
Chuyển đổi một nhân vật tiếng Trung giản thể, hoặc chuỗi, để Pinyin rất có thể sẽ yêu cầu một số hình thức của bản đồ với các điểm mã unicode là chìa khóa và bính âm tương ứng như giá trị.

Ví dụ về điều này trong PHP được hiển thị tại http://kingphp.com/108.html.

Một tìm kiếm đơn giản của Google cho [java pinyin] cho thấy một loạt các tùy chọn, hai trong số đó là thư viện tiếng Trung Quốc cho pinyin tại http://kiang.org/jordan/software/pinyinime/http://pinyin4j.sourceforge.net/.

+0

Than phiền cho tất cả điều đó, tôi sẽ lấy nó từ đây;) googling cho pinyin php và kết quả không phải là tuyệt vời, tuy nhiên chỉ cần thêm thẻ java bởi vì tôi chỉ mới bắt đầu học nên tôi không nghĩ đến google nó. – Moak

+0

mã kingphp.com hơi bị nhồi nhét, vì vậy bạn có thể cân nhắc đăng lại liên kết không? – think123

+0

@ think123: Tôi không chắc chắn ý bạn là gì. Tôi đăng một liên kết đến một ví dụ để chứng minh rằng những gì cần phải đạt được có thể đạt được. Liên kết vẫn hiển thị điều này. –

0

Nếu bạn đang sử dụng utf-8 để giải thích tập tin của bạn và các cuộc gọi đến DB, tôi đoán một đơn giản

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

nên làm các trick.

Bạn nhận chuỗi từ đâu?

+0

xin lỗi nếu nó không rõ ràng, tôi cần bính âm từ bất kỳ ký tự Trung Quốc nào. Trong trường hợp này để dịch tên. – Moak

4

Chậm, nhưng đã được giải quyết!

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

Nếu bạn đặt này tại http://www.example.com/foo.php, gõ http://www.example.com/foo.php?phrase=你好, và nó sẽ cung cấp cho bạn bính âm.

Đã kiểm tra và hoạt động.

Các vấn đề liên quan