PDA

View Full Version : Tiếng Việt trong C



new_bie
22-08-2007, 16:24
Có ai biết cách đánh chữ Tiếng Việt Unicode trong Turbo C ko???

nguyen.the.vinh
24-08-2007, 00:19
Nghe như chuyện cười ấy nhỉ ^_^

peacemoon
24-08-2007, 00:35
giờ còn Turbo C gì nữa

5diopt
24-08-2007, 09:55
Tui không biết, nhưng nghe câu hỏi của bạn hơi bị nhảm nhí nên chửi chơi (hix, đã turbo C mà còn tiếng việt nữa chứ - để làm gì vậy)

rilwis
25-08-2007, 05:11
Ngày trước mình có làm 1 chương trình C về từ điển Anh - Việt, để hiển thị tiếng Việt mình đã dùng các ngắt của DOS và tạo ra bảng font rồi load lên hệ thống, từ đó hiển thị ra. Ngoài ra cũng chặn các ngắt để có thể nhập tiếng Việt (chỉ cơ bản thôi chứ chưa chuyên nghiệp được như các phần mềm gõ tiếng Việt).

Bạn nghiên cứu kĩ về các ngắt của DOS + font hệ thống xem.
Cuốn sách nói về vấn đề này rất hay là "Cẩm nang lập trình 2 tập".

Chúc bạn thành công.

jiSh@n
25-08-2007, 06:50
Ngày trước mình có làm 1 chương trình C về từ điển Anh - Việt, để hiển thị tiếng Việt mình đã dùng các ngắt của DOS và tạo ra bảng font rồi load lên hệ thống, từ đó hiển thị ra. Ngoài ra cũng chặn các ngắt để có thể nhập tiếng Việt (chỉ cơ bản thôi chứ chưa chuyên nghiệp được như các phần mềm gõ tiếng Việt).

Bạn nghiên cứu kĩ về các ngắt của DOS + font hệ thống xem.
Cuốn sách nói về vấn đề này rất hay là "Cẩm nang lập trình 2 tập".

Chúc bạn thành công.

Người ta hỏi TV Unicode ông ơi . Unicode trên DOS đúng là chuyện cười lol

ohyesssvn
25-08-2007, 07:44
Ngày trước mình có làm 1 chương trình C về từ điển Anh - Việt, để hiển thị tiếng Việt mình đã dùng các ngắt của DOS và tạo ra bảng font rồi load lên hệ thống, từ đó hiển thị ra. Ngoài ra cũng chặn các ngắt để có thể nhập tiếng Việt (chỉ cơ bản thôi chứ chưa chuyên nghiệp được như các phần mềm gõ tiếng Việt).

Bạn nghiên cứu kĩ về các ngắt của DOS + font hệ thống xem.
Cuốn sách nói về vấn đề này rất hay là "Cẩm nang lập trình 2 tập".
Chúc bạn thành công.



Người ta hỏi TV Unicode ông ơi . Unicode trên DOS đúng là chuyện cười lol

Nguyên tắc là làm được (Người ta làm được, tui ko làm được)

Các chữ cái tiếng Việt thể hiện đủ trong khoảng 255 ký tự ASCII trong DOS

Ví dụ sử dụng bộ font của VietRes để hiển thị. Khi hiển thị văn bản theo UNICODE lên màn hình thì người ta làm 1 phép ánh xạ từ bộ mã UNICODE trong văn bản sang bộ mã của VietRes để in lên màn hình.

meotrang7x
25-08-2007, 07:47
Người ta hỏi TV Unicode ông ơi . Unicode trên DOS đúng là chuyện cười lol

Unicode trên Windows thì nó có sẵn thư viện và hỗ trợ, còn trên DOS chưa có thì chương trình của mình tự implement cái đó luôn cũng được chứ bạn. :)

new_bie
25-08-2007, 15:06
Các bác nói em cũng ko hiểu lắm. Bác nào có thể nói cụ thể cách hiển thị TV đc ko?

iTa-Corporation
25-08-2007, 15:59
Vẫn có thể đấy bạn ah, nhưng không hoàn chỉnh lắm đâu ... sài mã gì ấy quên mất rồi, nhưng bạn vào C khi ấn 1 số số đặc biệt thì nó sẽ hiện ra ký hiệu đặc biệt ... sài cái đó để gõ VN ^^

jiSh@n
25-08-2007, 20:09
Nguyên tắc là làm được (Người ta làm được, tui ko làm được)

Các chữ cái tiếng Việt thể hiện đủ trong khoảng 255 ký tự ASCII trong DOS

Ví dụ sử dụng bộ font của VietRes để hiển thị. Khi hiển thị văn bản theo UNICODE lên màn hình thì người ta làm 1 phép ánh xạ từ bộ mã UNICODE trong văn bản sang bộ mã của VietRes để in lên màn hình.
Tôi chỉ bảo là chuyện cười chứ ko nói làm ko được lol
Bộ font 8 bit của DOS ko đủ để hiển thị Tiếng Việt:no: Tiếng Việt có 12 nguyên âm, tính cả chữ hoa sẽ thành 24, có 6 dấu. Chỉ tính riêng tổ hợp nguyên âm và dấu đã là 144 ký tự, trong khi đó bảng mã ASCII chỉ có 128 ký tự cuối là có thể sử dụng để thay thế, 128 ký tự đầu thì đã có 96 ký tự thường được sử dụng trong văn bản, 32 ký tự điều khiển mà in ra màn hình sẽ biết mùi ngay. các ứng d5ung TV cũ trên DOS có 1 khiếm khuyết rất dễ nhận thấy các ký tự nguyên âm viêt hoa có dấu đều bị biến thành ký tự thường. lol Chỉ có duy nhất 1 cách là dùng chế độ đồ họa và dùng 1 bộ font thích hợp => đây cũng là cách của Windows.

còn trên DOS chưa có thì chương trình của mình tự implement cái đó luôn cũng được chứ bạn
Implement là điều hoàn toàn có thể, Unicode hay ASCII thì khi lưu xuống đĩa vẫn là từng byte thôi, vẫn đọc được, nhưng quan trọng là implement để làm gì? Chuyện cười chính là chỗ đó.

meotrang7x
25-08-2007, 22:12
Implement là điều hoàn toàn có thể, Unicode hay ASCII thì khi lưu xuống đĩa vẫn là từng byte thôi, vẫn đọc được, nhưng quan trọng là implement để làm gì? Chuyện cười chính là chỗ đó.

Implement để có thể hiển thị tiếng Việt Unicode trên DOS đó bác ;)

nguyen.the.vinh
26-08-2007, 23:08
Nói chung thì sức sáng tạo của con người là vô tận ^_^

Tienlbhoc
27-08-2007, 08:02
xài mấy cái của win đi bạn, nếu là bài tập trong dos thì ngày trươc có cái vietres(không nhớ lắm) là nhúng tiếng việt trong môi trường dos(8 bit), còn nếu muốn unicode, thì hơi bị phức tạp, bạn dùng các ngôn ngữ của win là hợp nhất, như c#, đặc biệt bây giờ mình làm một cái liên quan đến xử lý chuỗi nhiều, c chỉ cho string là 256, trong khi c# cho độ dài đến 2Gb để lưu trữ 1 string ( mình đã thử một string load từ text 17 Kb ), xài sướng lắm , mà nếu bạn sắp xếp tiếng việt thì lại còn phải xây dựng bảng alphabet nữa cơ, nói chung, chẳng ai làm cái của bạn nói trong dos cả, mình nghĩ 99% bạn hỏi cũng chỉ để đấy thôi, tham khảo một chút chứ làm thì ........
Các phần mềm trong dos chạy chậm hơn win do sử dụng được ít tài nguyên hệ thống, như cái đồ hoạ chỉ lên được độ phân giải tối thiểu( chả ma nào dùng), bị giới hạn bộ nhớ đệm, và nói chung chỉ lập trình hệ thống mới dùng c

whitepenguin
01-09-2007, 12:32
Nguyên tắc là làm được (Người ta làm được, tui ko làm được)

Các chữ cái tiếng Việt thể hiện đủ trong khoảng 255 ký tự ASCII trong DOS

Ví dụ sử dụng bộ font của VietRes để hiển thị. Khi hiển thị văn bản theo UNICODE lên màn hình thì người ta làm 1 phép ánh xạ từ bộ mã UNICODE trong văn bản sang bộ mã của VietRes để in lên màn hình.


ê ê ê xạo quá àh nhe , UNICODE font 1 ký tự 16 bít đó nha cha nội , làm gì mà ánh xạ VietRes lung tung thế :D , với lại bộ Font trong Video card dành cho DOS mỗi ô nhớ trong Video card là 1 byte thôi nhé , nói bậy óanh chết bây giờ .

Viết tiếng việt trong TUrbo C (DOS) thì dủng ASCII font thôi ko có UNICODE ,sau này khi windows ra đời mới có UNICODE .
có 1 cách để soạn tiếng việt dùng Font của Viẹtres trong Turbo C là viết Memory Resident Program ,load Font Việt Res Vào hệ thống ,chặn ngắt 09h ,và dùng cách thao tác trong resident Program để chỉnh sửa ký tự trong keyboard bufer (BIOS) 0x40h ,nói chung các thao tác này là do mình viết dùng trick để làm .

ohyesssvn
01-09-2007, 17:49
ê ê ê xạo quá àh nhe , UNICODE font 1 ký tự 16 bít đó nha cha nội , làm gì mà ánh xạ VietRes lung tung thế :D , với lại bộ Font trong Video card dành cho DOS mỗi ô nhớ trong Video card là 1 byte thôi nhé , nói bậy óanh chết bây giờ .

Viết tiếng việt trong TUrbo C (DOS) thì dủng ASCII font thôi ko có UNICODE ,sau này khi windows ra đời mới có UNICODE .
có 1 cách để soạn tiếng việt dùng Font của Viẹtres trong Turbo C là viết Memory Resident Program ,load Font Việt Res Vào hệ thống ,chặn ngắt 09h ,và dùng cách thao tác trong resident Program để chỉnh sửa ký tự trong keyboard bufer (BIOS) 0x40h ,nói chung các thao tác này là do mình viết dùng trick để làm .

Thiếu trí tưởng tượng (chọc lại thôi nha, đừng giận)

Giả sử nhập từ bàn phím chữ a mã ASCII là AA (ko biết, giả sử là vậy) tương ứng với đó chữ a trong bộ font Vietres là BB và trong UBICODE là AAAA

Khi phím a được bấm, chương trình sẽ ghi lên màn hình BB và ghi vào văn bản là AAAA.

Khi đọc từ văn bản ra, thấy 1 WORD là AAAA chương trình sẽ ghi lên màn hình la BB.

Omega Prince
22-10-2007, 03:14
Ok xài MS VC++ 6.0 lun đó. Vậy có ai gõ tiếng Việt dc ko,chỉ cho tui với!

langxangvn
25-10-2007, 23:38
VC++ 6.0 không hỗ trợ soạn thảo Unicode ngay trong đó nhưng API hỗ trợ tốt Unicode, và chấp nhận dạng UTF-8 dùng Unikey gõ với bảng mã là Unicode C String. Bạn nhớ lưu file dạng UTF-8, thiết lập macro define UNICODE và _UNICODE, bỏ _MBCS, dùng các kiểu dữ liệu và hàm hỗ trợ Unicode như TCHAR thay CHAR, LPTSTR thay LPSTR ..., dùng các hàm hỗ trợ Unicode như lstrlen thay strlen ... Hay có thể dùng hàm MultiByteToWideChar để chuyền hằng ký tự sang dạng Unicode rồi gán cho các phần muốn hiển thị.

Chi tiết có thể tìm trên PCWorld A, có 2 bài khá chi tiết về vấn đề này.
http://www.pcworld.com.vn/pcworld/magazine.asp?t=mzdetail&atcl_id=5f5e5c56585956
http://www.pcworld.com.vn/pcworld/magazine.asp?t=mzdetail&atcl_id=5f5e5c56565656
Phần common control cũng có trong đó luôn. Phần MessageBox bạn có thể hook message CBT. Xem thêm MSDN về các phần đó. Mình nghĩ hai bài viết trên PCWorld là chi tiết lắm rồi, cũng không khó thực hiện.