09/10/2018, 23:31
Giúp mình với. Tạo từ điển theo chuẩn DICT!!!
Mình đang làm một bài tập PHP trong đó yêu cầu download cơ sở dữ liệu của chuẩn từ điển DICT, dùng PHP viết chương trình kết nối đến CSDL đó để lấy nghĩa của từ do người dùng nhập vào.
Mình đã kết nối đến CSDL và lấy ra được đoạn nghĩa của từ tương ứng, tuy nhiên đoạn nghĩa đó lại bị mã hóa rất lạ, mình không biết làm sao để cho nó hiện ra đúng từ latinh.
File chứa nghĩa của từ điển anhViet là anhviet109K.dict.dz . Các bạn có thể chỉ giúp mình cách thức mã hóa cho ra đúng nghĩa được không?
Dưới đây là một đoạn nghĩa bị mã hóa mà mình lôi ra được khi tra từ "robin" :
‹¤<é@RA�Ëãÿ�¦C©CBDFCÝ<§<2Bë BBöG‡FL¨D‚HEÊID™DÿH,GþCÞHDàE• GWDÈE>CPB™D)FWHDJJ÷Dü@é=0?Ò@:<9iEF<1¯D
Mình đã kết nối đến CSDL và lấy ra được đoạn nghĩa của từ tương ứng, tuy nhiên đoạn nghĩa đó lại bị mã hóa rất lạ, mình không biết làm sao để cho nó hiện ra đúng từ latinh.
File chứa nghĩa của từ điển anhViet là anhviet109K.dict.dz . Các bạn có thể chỉ giúp mình cách thức mã hóa cho ra đúng nghĩa được không?
Dưới đây là một đoạn nghĩa bị mã hóa mà mình lôi ra được khi tra từ "robin" :
‹¤<é@RA�Ëãÿ�¦C©CBDFCÝ<§<2Bë BBöG‡FL¨D‚HEÊID™DÿH,GþCÞHDàE• GWDÈE>CPB™D)FWHDJJ÷Dü@é=0?Ò@:<9iEF<1¯D
Bài liên quan
<?php
$sword = $_POST***91;'name'***93;;
echo "Ban nhap vao tu: ".$sword."<br \> ";
$handle = @fopen("./AnhViet/data/EV/anhviet109K.index", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 100);
$pos = strpos($buffer,"\t" );
$word = substr($buffer,0,$pos );
$data = substr($buffer,$pos+1 );
if ($word == $sword)
{
$pos = strpos($data,"\t" );
$data1 = substr($data,0,$pos ); // phan chua dia chi offset cua tu
$data2 = substr($data,$pos+1 ); // phan chua do dai nghia cua tu
break;
}
}
fclose($handle);
}
else
echo "Khong tim thay du lieu!";
//ham chuyen tu co so 64 sang co so 10
function GetDecimalValue($string)
{
$base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz0123456789+/";
$decValue = 0;
for ($i=0 ; $i<strlen($string) ; $i++)
{
$pos = strpos($base64, substr($string,$i,1 )) ;
$decValue += pow(64,strlen($string)-$i-1)*$pos;
}
return $decValue;
}
echo GetDecimalValue($data1)."<br \> ";
echo GetDecimalValue($data2)."<br \> ";
//Ham lay va in nghia ra tu CSDL
function GetMeaning($offset,$length)
{
$handle = @fopen("./AnhViet/data/EV/anhviet109K.dict.dz", "r");
if ($handle) {
$meaning = stream_get_contents($handle, $length, $ofset);
if ($meaning)
echo $meaning;
else
echo "Khong tim thay nghia cua tu!";
fclose($handle);
}
else
echo "khong mo duoc file!";
}
GetMeaning(GetDecimalValue($data1),GetDecimalValue ($data2));
?>
mình thấy anhtuannd nói dùng winrar để giải file anhviet109k.dict.dz.nghĩa là sao mong anh anhtuannd giúp em với.Cảm ơn anh nhiều