[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.

Dữ liệu PostgreSQL bị lỗi font
Dữ liệu PostgreSQL bị lỗi font

Ở đây mình sẽ xuất dữ liệu lỗi font từ PostgreSQL ra SQL

Xuất dữ liệu lỗi font từ PostgreSQL ra SQL
Xuất dữ liệu lỗi font từ PostgreSQL ra SQL

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++.

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

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

Bộ công cụ Unikey
Bộ công cụ Unikey

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

Sau khi chuyển mã sang từ TCVN3 sang Unicode
Sau khi chuyển mã sang từ TCVN3 sang Unicode

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

TRUNCATE SQL
TRUNCATE SQL

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.

Import SQL to PostgreSQL
Import SQL to PostgreSQL

Kết quả sau khi import

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

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-