Lỗi font chữ khi truyền từ java vào mysql năm 2024

Bạn đăng nhập vào hosting đi tới phần quản lý cở sở dữ liệu database MySQL thông thường các hosting ở Việt Nam sử dụng PHPMyAdmin

  • Chọn Export (xuất file)
  • Export method / chọn "Custom - display all possible options"
  • Format / Chọn CSV

Lỗi font chữ khi truyền từ java vào mysql năm 2024
MySQL xuất file CSV - ảnh Panpic

Bạn kéo thanh cuộn trình duyệt xuống dưới:

  • Save output to a file / Character set of the file chọn "utf-8"
  • Format-specific options / Đánh dấu vào checkbox chọn "Put columns name in the first row"
    Lỗi font chữ khi truyền từ java vào mysql năm 2024
    PHPMyAdmin xuất file CSV - ảnh Panpic

Sau đó nhấp chuột vào nút "Go" để xuất file CSV / Bạn đặt tên file và lưu vào ổ địa D của máy tính. Ví dụ: db-sua-loi-font-file.csv

Sửa lỗi font tiếng Việt file CSV

Nhấp chuột phải vào file bạn vừa xuất db-sua-loi-font-file.csv / Chọn "Edit with Notedpad++ hoặc chọn Open with / chọn More app / Tìm chương trình Notepadd++ bạn đã cài đặt ở ổ đĩa C của Windows:

C:\Program Files \ Notepad++ \ notedpad++.exe hoặc C:\Program Files (x86) \ Notepad++ \ notepad++.exe Nếu bạn chưa cài Notedpad++ bạn có thể download Notepad++ hoàn toàn miễn phí từ link: https://notepad-plus-plus.org/

Lỗi font chữ khi truyền từ java vào mysql năm 2024
Mở file CSV với Notedpad++ ảnh Panpic

Sau khi đã mở file CSV với Notepad++ / trên menu Notepad++ bạn vào Encoding / UTF-8-BOM / Sau đó lưu lại

Trong bài viết này mình sẽ hướng dẫn các bạn xử lý trường hợp xảy ra trên hosting khi import database xuất hiện thông báo lỗi:

Lỗi như trên là vì phiên bản MySQL hiện tại mà hosting đang chạy không hỗ trợ cho bảng mã utf8mb4_unicode_520_ci.

Cũng có lúc bạn sẽ gặp lỗi:

1273 - Unknown collation: 'utf8mb4_unicode_ci'

với lý do tương tự.

Bạn có thể tạo một file info.php để kiểm tra phiên bản MySQL đang chạy trên hosting của mình là gì để biết phiên bản đó có hỗ trợ bảng mã đó hay không.

Theo như hình phiên bản MySQL mà hosting của Kỹ thuật đang dùng là 5.5.36. Với phiên bản MySQL này thì không hỗ trợ bảng mã utf8mb4_unicode_520_ci nhưng có hỗ trợ bảng mã utf8mb4_unicode_ci.

Vậy làm cách nào để bạn import database sử dụng bảng mã utf8mb4_unicode_520_ci lên hosting đang chạy phiên bản MySQL 5.5.36?

Ta sẽ có 2 cách:

  • Cách 1: Báo lại với nhà cung cấp dịch vụ của bạn yêu cầu họ nâng cấp phiên bản MySQL lên phiên bản 5.6 (phiên bản này có hỗ trợ bảng mã utf8mb4_unicode_520_ci)
  • Cách 2: Chuyển đổi bảng mã utf8mb4_unicode_520_ci về các bảng mã mà phiên bản MySQL hiện tại bạn đang dùng có hỗ trợ.

Ở đây chúng ta sẽ không bàn đến cách 1, Kỹ thuật sẽ hướng dẫn các bạn làm cách 2.

Với cách 2, đầu tiên bạn sẽ cần cài đặt Notepad++ để mở file database lên thì mình mới có thể chỉnh sửa được bảng mã. Tải về file cài đặt Notepad++ tại đây.

Sau khi đã tải về và cài đặt Notepad++ trên máy tính cá nhân, bạn tiến hành mở file database lên bằng cách click chuột phải vào file và chọn Edit with Notepad++.

Mở file lên xong, bạn sẽ tìm đến một bảng (table) gần nhất sẽ thấy bảng đó dùng bảng mã utf8mb4_unicode_520_ci.

Giờ ta sẽ đổi toàn bộ bảng mã utf8mb4_unicode_520_ci thành utf8mb4_unicode_ci bằng cách dùng tính năng Replace của Notepad++.

Bạn nhấn tổ hợp phim Ctrl+H hoặc là chọn Search > Replace như hình dưới.

Có một toolbox sẽ xuất hiện giữa màn hình, bạn sẽ nhập utf8mb4_unicode_520_ci vào ô Find what, nhập utf8mb4_unicode_ci vào ô Replace with, sau đó nhấn Replace All.

Tiến hành lưu lại file này và import database lại là thành công.

Nếu các bạn gặp phải lỗi

1273 - Unknown collation: 'utf8mb4_unicode_ci'

hoặc lỗi

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '

thì đó là do phiên bản MySQL hiện tại không hỗ trợ, bạn nên đổi về lại utf8_unicode_ci với cách như trên nhé.

Chào mọi người, ở bài viết này mình sẽ hướng dẫn mọi người cách để kết nối tới cơ sở dữ liệu MySQL trong Java. Ở đây mình sử dụng Netbean nên nếu bạn sử dụng Eclipse thì sẽ có vài chỗ khác bạn hãy qua bài viết ở link sau để xem nhé. ( updating )

Ở đây máy mình đang có sẵn phpMyAdmin nên mình sẽ sử dụng luôn cái này để thực hiện.

Nếu bạn chưa biết cách thao tác với phpMyAdmin thì qua bài viết này để xem nên xem phần tạo tài khoản, phân quyền và tạo cơ sở dữ liệu ( click here ). Mọi người có thể dùng các phần mềm khác như MySQL WorkBench, hoặc MySQL Server… Mình sẽ không nói kỹ chỗ này.

Đây là thông tin user mình dùng để connect tới cơ sở dữ liệu là:

  • User: david
  • Password: david

Ok sau khi xong các bước trên, chúng ta sẽ tạo 1 project mới trong netbean để bắt đầu các bước kết nối vào cơ sở dữ liệu. Trong Java thì cả java application và web application ( jsp/servlet ) cách kết nối tương tự như nhau. Ở đây mình tạo 1 project java application mới như trong hình và mình tạo ra 1 package là djohnblog, 1 file để kết nối tới cơ sở dữ liệu là DataConnection:

Lỗi font chữ khi truyền từ java vào mysql năm 2024

my project

Trước khi bắt đầu code chúng ta cần phải import thêm thư viện jdbc mysql driver cho project, nếu phiên bản Netbean bạn đang sử dụng version từ 8.0.2 trở lên thì thư viện này đã được tích hợp sẵn trong Netbean chỉ cần lấy ra sử dụng như sau:

Chuột phải vào Libraries trong project -> Add library… -> chọn MySQL JDBC Driver -> Add library

Lỗi font chữ khi truyền từ java vào mysql năm 2024

Add Library

Lỗi font chữ khi truyền từ java vào mysql năm 2024

Add Library 2

Nếu sử dụng version thấp hơn hoặc trong Libary không có thì mọi người vào đây để tải MySQL JDBC Driver về ( click here )

Lỗi font chữ khi truyền từ java vào mysql năm 2024

download mysql connector j

Sau khi tải về xong, giải nén ra chúng ta sẽ thấy có file “mysql-connector-java--bin.jar” :

Lỗi font chữ khi truyền từ java vào mysql năm 2024

Add JAR/Folder 2

Chúng ta vào lại trong Project và chuột phải chọn Libraries -> Add Jar/Folder -> tìm đến file trên và click vào open:

Lỗi font chữ khi truyền từ java vào mysql năm 2024

Add JAR/Folder

Lỗi font chữ khi truyền từ java vào mysql năm 2024

Add JAR/Folder 2

Sau khi thêm xong, chúng ta sẽ tạo 1 file cấu hình để lưu các thông tin để connect vào database của chúng ta. Ở đây mình sẽ tạo file có tên là “info.properties” có nội dung như sau:

MySQL

url=jdbc:mysql://localhost:3306/ user=david password=david

Nếu bạn chưa biết về file properties hay cách sử dụng nó trong Java thì hãy qua bài viết này để đọc trước nhé ( click here ).

Ok sau khi xong hết chúng ta bắt đầu code class để lấy connect đến cơ sở dữ liệu như sau:

public class DataConnection {

private static Connection con;
private static String URL;
private static String USER;
private static String PASSWORD;
public static Connection getConnection() {
    con = null;
    Properties properties = new Properties();
    try {
        properties.load(new FileReader(new File("info.properties")));
        URL = properties.getProperty("url");
        USER = properties.getProperty("user");
        PASSWORD = properties.getProperty("password");
        // driver register
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        con = (Connection) DriverManager.getConnection(URL, USER, PASSWORD);
    } catch (IOException | SQLException ex) {
        Logger.getLogger(DataConnection.class.getName()).log(Level.SEVERE, null, ex);
    }
    return (con);
}
public static void freeConnection() {
    try {
        con.close();
    } catch (SQLException ex) {
        Logger.getLogger(DataConnection.class.getName()).log(Level.SEVERE, null, ex);
    }
}
}

Ở đoạn code trên chúng ta sẽ chú ý vài chỗ:

  1. Biến kiểu Connection : import com.mysql.jdbc.Connection
  2. DriverManager.registerDriver(new com.mysql.jdbc.Driver()) : Dòng này để chúng ta sẽ đăng ký driver MySQL nếu bạn sử dụng 1 kiểu DBMS khác như SQLServer … thì chúng ta sẽ đăng ký driver của SQLServer.
  3. (Connection) DriverManager.getConnection(URL, USER, PASSWORD) : Dòng này để lấy ra connection đến cơ sở dữ liệu với 3 tham số truyền vào lần lượt là : url để connect, tên user để connection, password của user và ép kiểu về kiểu Connection. Nếu không lấy được connection đến cơ sở dữ liệu thì sẽ trả về đối tượng null.

Bây giờ chúng ta sẽ test thử bằng 1 hàm main như sau để xem có thể connect tới cơ sở dữ liệu hay không?

NOTE: Nhớ mở MySQL server lên nhé 😀

public static void main(String[] args) {

    Connection c = getConnection();
    if (c == null) {
        System.out.println("something wrong");
    } else {
        System.out.println("ok");
    }
}

NOTE: Nếu không connect được thì bạn hãy xem lại vài lý do sau :

  1. Thông tin của user có đúng không?
  2. Kiểm tra lại url dùng để connect?
  3. Kiểm tra lại thư viện JDBC MySQL
  4. Kiểm tra import Connection có đúng thư viện chưa?
  5. Kiểm tra xem đã đăng ký driver MySQL chưa?

Ok, vậy là mình đã hướng dẫn mọi người cách kết nối tới cơ sở dữ liệu MySQL trong Java sử dụng IDE Netbeans, hy vọng bài viết này sẽ giúp ích với mọi người 😀