Định dạng tiếng Việt trong file báo cáo (Excel) ???

Định dạng tiếng Việt trong file báo cáo (Excel) ???

Bởi Vu Tuan Anh -
Số lượng các câu trả lời: 5
Xin chào tất cả các bạn,
Hiện nay chúng tôi đang chạy phiên bản Moodle 1.5 release. Hiển thị tiếng Việt tốt. Tuy nhiên khi muốn xem điểm của các học viên dưới dạng excel file thì mất font tiếng Việt. Vậy bạn nào đã có cách giải quyết vấn đề này hãy chia sẻ kinh nghiệm cho anh em.
Xin cám ơn.
Vũ Tuấn Anh
Trung bình điểm đánh giá: -
Để phản hồi tới Vu Tuan Anh

Trả lời: Định dạng tiếng Việt trong file báo cáo (Excel) ???

Bởi Thuy Tran -

cười Chào Tuấn Anh,

Mình cũng gặp vấn đề như vậy.
Trong /moodle/course/grades.php, khi thực hiện ghi dữ liệu ra file excel, gọi đến function write_string() (/moodle/lib/excel/Worksheet.php). Do vậy mình nghĩ vấn đề này nằm ở function write_string(). Theo mình chỉ cần convert encoding sang character encoding phù hợp là OK.

Có một số giải pháp đã được đưa ra, bạn có thể xem tại đây: http://moodle.org/mod/forum/discuss.php?d=1779
Mình đã thử cả 2 cách của Mitshuhiro và Ling Li (link ở trên), về lý thuyết lẽ ra phải OK, nhưng thực tế thì vẫn chưa được. Không rõ cách giải quyết vấn đề của mình có sai ở đâu không? Mong các cao thủ giúp đỡ.

Theo cách dùng iconv, mình đã thêm vào 2 dòng:

 function write_string($row, $col, $str, $format = 0)
    {
 
        $interen=mb_internal_encoding();  //added by ThuyTP
        $str = iconv($interen, 'UTF-8', $str); //added by ThuyTP
        $strlen    = strlen($str);
        $record    = 0x0204;                   // Record identifier
        $length    = 0x0008 + $strlen;         // Bytes to follow

    //...the rest of the function;
}
Dùng mb_convert_encoding, mình sửa lại là nên bỏ tham số thứ 3 (auto) để mặc định from_encoding là internal encoding.

Tuấn Anh đã thử giải quyết vấn đề này như thế nào chưa? Có kinh nghiệm gì thì bạn chia sẻ nhé!

Để phản hồi tới Thuy Tran

Trả lời: Định dạng tiếng Việt trong file báo cáo (Excel) ???

Bởi Vu Hung -
Chào Tuấn Anh và Thúy,

Mình cũng tìm hiểu vấn đề này trong một vài ngày gần đây. Đây là lỗi Unicode thư viện sinh file excel mà Moodle sử dụng.

Ban đầu mới phát triển (năm 1995) và trong các phiên bản đầu của PHP, vấn đề Unicode chưa được quan tâm. Vấn đề là với bảng mã ASCII cũng đủ đáp ứng yêu cầu cho Mỹ và gần như toàn bộ Châu Âu. Do đó nhiều hàm trong PHP không hỗ trợ Unicode (nhất là các hàm liên quan tới chuỗi: strlen, strtoupper, etc). Mặc dù đã có một số giải pháp nhưng các nhà phát triển thư viện PHP lại rất ít quan tâm vì chủ yếu họ đến từ Mỹ và Châu Âu. Thư viện xử lý excel cũng như vậy.

Mình đã thử một số giải pháp của Mitshuhiro và Ling Li như Thúy nói, nhưng cũng chưa hiện tiếng Việt đúng. Mình sẽ trao đổi kĩ hơn với cộng đồng Moodle.

Các bạn đã có giải pháp nào khắc phục vấn đề này chưa?

Thân ái,
Vũ Hùng



Để phản hồi tới Thuy Tran

Trả lời: Định dạng tiếng Việt trong file báo cáo (Excel) ???

Bởi Vu Hung -
Chào Thúy,
Anh nghĩa là phải chuyển câu lệnh thành như sau thì mới đúng chỉ dẫn của Ling Li:

$str = iconv('UTF-8', 'VISCII', $str);

Ý nghĩa của iconv là chuyển từ UTF-8 sang native code của từng nước (Việt Nam, Trung Quốc, etc).

Em sẽ thấy kết quả sẽ khá hơn nhưng vẫn chưa đúng hòan toàn.

Để phản hồi tới Thuy Tran

Trả lời: Định dạng tiếng Việt trong file báo cáo (Excel) ???

Bởi Vu Hung -
Theo tôi quan sát, thư viện xử lý EXCEL đã hỗ trợ hoàn toàn UTF_8. Do đó, trong các phiên bản tiếp theo (từ 1.6) sẽ không còn lỗi tiếng Việt với các file EXCEL.

Cheers!