Nếu bạn cần lưu trữ dữ liệu UTF8 trong cơ sở dữ liệu của mình, bạn cần một cơ sở dữ liệu chấp nhận UTF8. Bạn có thể kiểm tra mã hóa cơ sở dữ liệu của mình trong pgAdmin. Chỉ cần nhấp chuột phải vào cơ sở dữ liệu và chọn "Thuộc tính".
Nhưng lỗi đó dường như đang cho bạn biết có một số dữ liệu UTF8 không hợp lệ trong tệp nguồn của bạn. Điều đó có nghĩa là copy
tiện ích đã phát hiện hoặc đoán rằng bạn đang cấp cho nó một tệp UTF8.
Nếu bạn đang chạy dưới một số biến thể của Unix, bạn có thể kiểm tra mã hóa (nhiều hơn hoặc ít hơn) với tệp file
tiện ích.
$ file yourfilename
yourfilename: UTF-8 Unicode English text
(Tôi nghĩ điều đó cũng sẽ hoạt động trên máy Mac trong thiết bị đầu cuối.) Không chắc chắn về cách thực hiện điều đó trong Windows.
Nếu bạn sử dụng cùng một tiện ích đó trên một tệp đến từ hệ thống Windows (nghĩa là một tệp không được mã hóa bằng UTF8), nó có thể sẽ hiển thị như thế này:
$ file yourfilename
yourfilename: ASCII text, with CRLF line terminators
Nếu mọi thứ vẫn kỳ lạ, bạn có thể cố gắng chuyển đổi dữ liệu đầu vào của mình sang một kiểu mã hóa đã biết, để thay đổi kiểu mã hóa của khách hàng hoặc cả hai. (Chúng tôi đang thực sự mở rộng giới hạn hiểu biết của tôi về các mã hóa.)
Bạn có thể sử dụng iconv
tiện ích để thay đổi mã hóa dữ liệu đầu vào.
iconv -f original_charset -t utf-8 originalfile > newfile
Bạn có thể thay đổi mã hóa psql (máy khách) theo hướng dẫn trên Hỗ trợ bộ ký tự. Trên trang đó, hãy tìm kiếm cụm từ "Để bật chuyển đổi bộ ký tự tự động".