Dữ liệu GIS Mẹo vặt Sói's Tutorials

[PostgreSQL] Sửa lỗi font chữ tiếng Việt

[PostgreSQL] Sửa lỗi font chữ tiếng Việt Có thể áp dụng để sửa các kiểu lỗi font khác. Thường thì sau khi import dữ liệu vào PostgreSQL, nhất là đối với dữ liệu được import từ Shapefile, DGN (MicroStation), Autocad,.. thì chúng ta rất dễ bị lỗi font do các font được sử dụng trên ArcView (VNI), ArcMap, Mapinfow (TCVN3), MicroStation, Cad,.. thường là font TCVN3 hay Vni. Trong khi mã trên PostgreSQL thường là theo Unicode/UTF-8. Do vậy font khi hiển thị ra sẽ bị lỗi Dưới đây là cách sửa lỗi font trong PostgreSQL do mình nghĩ ra, do vậy bạn nào có cách nào khác nhanh hơn thì có thể chia sẻ ở đây nhé! Các thức sửa font:

  1. Chuyển dữ liệu sang dạng text
  2. Xác định mã font gốc là gì (TCVN3 hay Vni hay gì gì.. :v)
  3. Dùng Công cụ của Unikey để chuyển mã
  4. Import dữ liệu trở lại PostgreSQL

1. Chuyển dữ liệu sang dạng text

Bước này mục đích cuối là chuyển được dữ liệu sang dạng text, do vậy bạn làm cách nào cũng được, miễn đưa nó về dạng text. [caption id="attachment_655" align="aligncenter" width="1084"]Dữ liệu PostgreSQL bị lỗi font Dữ liệu PostgreSQL bị lỗi font[/caption] Ở đây mình sẽ xuất dữ liệu lỗi font từ PostgreSQL ra SQL [caption id="attachment_657" align="alignnone" width="812"]Xuất dữ liệu lỗi font từ PostgreSQL ra SQL Xuất dữ liệu lỗi font từ PostgreSQL ra SQL[/caption]

2. Xác định font ban đầu

Sau khi xuất ra SQL thì chúng ta có thể dùng các text editor để mở nó. Ở đây mình dùng Notepad++. [caption id="attachment_658" align="alignnone" width="615"]Dữ liệu lỗi font PostgreSQL sau khi xuất ra SQL Dữ liệu lỗi font PostgreSQL sau khi xuất ra SQL[/caption] Chúng ta sẽ dùng Unikey để thử sai chuyển font thử một cụm từ nhằm xác định font đúng của dữ liệu. Sử dụng bộ công cụ đi kèm theo phần mềm gõ tiếng Việt Unikey. Để khởi động nó, chúng ta nhấn tổ hợp phím:
Ctrl Shift F6
Tích chọn chuyển mã clipboard [caption id="attachment_659" align="alignnone" width="460"]Bộ công cụ Unikey Bộ công cụ Unikey[/caption] Lần lượt copy đoạn văn bản góc (trong file SQL) rồi chuyển mã lần lượt từ TCVN3 sang Unicode, VNI WINDOW sang Unicode (lưu ý mỗi lần chuyển là mỗi lần copy lại đoạn văn bản gốc để nạp dữ liệu cần chuyển vào bộ nhớ tạm (clipboard). Chuyển cho đến khi nhận được văn bản đúng thì có thể xác định được bộ mã gốc của dữ liệu. Ví dụ đối với dữ liệu của mình ở trên:
Gốc: Êp Ph­íc HiÖp TCVN3: ấp Phước Hiệp VNI WINDOW: p Ph­íc HiƯp
Vậy, dữ liệu của mình là TCVN3. Bây giờ chúng ta sẽ chuyển toàn bộ file SQL từ TCVN3 sang Unicode.

3. Chuyển mã sang Unicode

Chúng ta sẽ dùng bộ công cụ chuyển mã của Unikey để chuyển giống bước 2, tuy nhiên lần này là sẽ chuyển toàn bộ file SQL chúng ta xuất ra được sang unicode [caption id="attachment_660" align="alignnone" width="657"]Sau khi chuyển mã sang từ TCVN3 sang Unicode Sau khi chuyển mã sang từ TCVN3 sang Unicode[/caption]

4. Import dữ liệu đã sửa vào PostgreSQL

Sau khi đã sửa font dữ liệu, chúng ta sẽ import file SQL trở lại vào PostgreSQL. Để Import vào không bị lỗi, chúng ta cần xóa hết dữ liệu cũ rồi mới Import dữ liệu mới vào. Để xóa dữ liệu cũ, chúng ta chạy lệnh TRUNCATE
TRUNCATE thuadat;
Sau đó import file SQL vào PostgreSQL [caption id="attachment_661" align="alignnone" width="417"]TRUNCATE SQL TRUNCATE SQL[/caption] Bảng dữ liệu thửa đất sau khi đã xóa rỗng Bảng dữ liệu thửa đất sau khi đã xóa rỗngSau khi xóa rỗng bảng, chúng ta Import dữ liệu mới vào. [caption id="attachment_663" align="alignnone" width="864"]Import SQL to PostgreSQL Import SQL to PostgreSQL[/caption] Kết quả sau khi import [caption id="attachment_664" align="alignnone" width="1288"][PostgreSQL] Sửa lỗi font chữ tiếng Việt [PostgreSQL] Sửa lỗi font chữ tiếng Việt[/caption]— Vậy là đã sửa lỗi font tiếng Việt trong PostgreSQL Chúc mọi người làm được. p/s: Cách làm này có khuyết điểm là chỉ có thể làm với những dữ liệu nhỏ vì mình chuyển trực tiếp bằng Unikey. Ai có cách chuyển dữ liệu lớn thì góp ý bên dưới nhé! -soiqualang_chentreu-]]>

Leave a Reply

Your email address will not be published. Required fields are marked *