Friday, January 25, 2008

Những vấn đề liên quan đến bài toán Bóc tách nội dung

Những vấn đề phát sinh xung quanh bài toán bóc tách nội dung trang WEB vẫn còn tiếp diễn. Lần này là chế độ BẢNG MÃ của trang WEB. Không phải mọi trang đều có bảng mã giống nhau nên chúng ta cần phải tự nhận ra BẢNG MÃ đó để chuyển về đúng bảng mã mà chúng ta cần để xử lý cho thống nhất.
Những bảng mã thường xuất hiện:
. NCR Decimal
. UTF-8
. ISO-8859-1
. Windows CP1258
Như thế sẽ cần đến bộ chuyển mã cho nội dung nhận được từ những bảng mã này về mã UNICODE.

Một bộ chuyển mã được đóng gói thành thư viện hỗ trợ môi trường .NET là : vnConvert của tác giả Nguyễn Đức Khoan. Hệ thống còn được đóng gói thành phần mềm với các tính năng:
- Chuyển mã tiếng việt cho MS Access, MS SQL Server, Oracle database. (Đã có chức năng chuyển mã tiếng việt cho Oracle).
- Chuyển mã Clipboard: văn bản trong clipboard sau khi chuyển đổi sẽ trả về dạng Text không có định dạng.
- Hỗ trợ chuyển đổi qua lại giữa các bảng mã tiếng việt Unicode dựng sẵn, Unicode tổ hợp, VNI-Windows, TCVN3 (ABC), UTF-8, Windows CP1258 và NCR Decimal.
- Chuyển tất cả các mã tiếng việt có dấu trên thành mã KHÔNG DẤU.
- Có thể tự nhận dạng mã tiếng việt khi chuyển đổi.

Link: http://luudiachiweb.com/convertdb/

Tuesday, January 22, 2008

Ứng dụng C# gọi chương trình console mà không xuất hiện cửa sổ DOS

Trong quá trình lập trình, tôi sử dụng đến một chương trình DOS để thực hiện các tác vụ nền, vì là tác vụ nền nên không muốn nó hiển thị lên cửa sổ đen của DOS khi nó được gọi. Sau đây là cách thực hiện (môi trường C#):
// This code needs the "System.Diagnostics" library
// Application path and command line arguments
string ApplicationPath = "C:\\example.exe";
string ApplicationArguments = "-c -x";
// Create a new process object
Process ProcessObj = new Process();
// StartInfo contains the startup information of the new process
ProcessObj.StartInfo.FileName = ApplicationPath;
ProcessObj.StartInfo.Arguments = ApplicationArguments;
// These two optional flags ensure that no DOS window appears
ProcessObj.StartInfo.UseShellExecute = false;
ProcessObj.StartInfo.CreateNoWindow = true;
// If this option is set the DOS window appears again :-/
// ProcessObj.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// This ensures that you get the output from the DOS application
ProcessObj.StartInfo.RedirectStandardOutput = true;
// Start the process
ProcessObj.Start();
// Wait that the process exits
ProcessObj.WaitForExit();
// Now read the output of the DOS application
string Result = ProcessObj.StandardOutput.ReadToEnd();