Hướng dẫn php german character encoding - mã hóa ký tự tiếng Đức php

Tôi có vấn đề với các ký tự Đức trên trang web của mình,

Trong phần HTML/PHP của trang web, tôi có mã này để đặt UTF-8:


Trong mysql, tôi có mã này để đặt UTF-8

SET CHARSET 'utf8';
  1. Đây là một số từ về tiếng Đức:

    SET CHARSET 'utf8';
    
    2

  2. Đây là cách từ đó trông trong bảng MySQL:

    SET CHARSET 'utf8';
    
    3

  3. Đây là cách từ đó được hiển thị trên trang web:

    SET CHARSET 'utf8';
    
    4

Vấn đề là gì? Cảm ơn.

Hướng dẫn php german character encoding - mã hóa ký tự tiếng Đức php

Pete

55.3K26 Huy hiệu vàng109 Huy hiệu bạc157 Huy hiệu đồng26 gold badges109 silver badges157 bronze badges

Khi được hỏi ngày 22 tháng 5 năm 2013 lúc 12:04May 22, 2013 at 12:04

5

Tôi đã sử dụng mã này để có được tiêu đề:

$title = mysql_real_escape_string(htmlentities($_POST['title']));

Tôi chỉ ghi đè lên điều đó để

$title = $_POST['title'];

Hướng dẫn php german character encoding - mã hóa ký tự tiếng Đức php

Astrocb

12.2k20 Huy hiệu vàng57 Huy hiệu bạc72 Huy hiệu đồng20 gold badges57 silver badges72 bronze badges

Đã trả lời ngày 22 tháng 5 năm 2013 lúc 12:35May 22, 2013 at 12:35

user1814358user1814358user1814358

6193 Huy hiệu vàng8 Huy hiệu bạc17 Huy hiệu đồng3 gold badges8 silver badges17 bronze badges

5

Lúc đầu, hãy chắc chắn rằng bạn có các ký tự UTF-8 trong cơ sở dữ liệu của mình.

Sau đó, hãy thử sử dụng

SET CHARSET 'utf8';
5 sau khi kết nối với MySQL:

$con=mysqli_connect("host", "user", "pw", "db");   
if (!$con)
{
    die('Failed to connect to mySQL: ' .mysqli_connect_errno());
}

mysqli_query($con, "SET NAMES 'UTF8'") or die("ERROR: ". mysqli_error($con));

Như hướng dẫn sử dụng:

Đặt tên cho biết bộ ký tự nào mà máy khách sẽ sử dụng để gửi các câu lệnh SQL đến máy chủ ... Nó cũng chỉ định bộ ký tự mà máy chủ nên sử dụng để gửi kết quả cho máy khách.

Đã trả lời ngày 22 tháng 5 năm 2013 lúc 12:10May 22, 2013 at 12:10

user4035user4035user4035

21.6K10 Huy hiệu vàng56 Huy hiệu bạc91 Huy hiệu Đồng10 gold badges56 silver badges91 bronze badges

Hãy thử

SET CHARSET 'utf8';
6 hoặc
SET CHARSET 'utf8';
7. Một số trong số này hoạt động tốt cho người Bồ Đào Nha, có lẽ đối với người Đức cũng vậy. Tôi chỉ không thể nhớ cái nào là chính xác, nhưng nếu không, một lỗi sẽ được tạo ra.

Đã trả lời ngày 22 tháng 5 năm 2013 lúc 12:08May 22, 2013 at 12:08

Bạn nên đảm bảo rằng kết nối cũng là UTF-8.

Với mysqli, điều này được thực hiện với một cái gì đó như thế này:

$connection = mysqli_connect($host, $user, $pass, $db_name);
$connection->set_charset("utf8");

Bây giờ nếu bằng cách nào đó bạn đã kết thúc với các ký tự sai trong cơ sở dữ liệu thì có một cách để làm cho nó đúng:

  1. Trong tập lệnh PHP, hãy truy xuất thông tin như bạn làm bây giờ, tức là mà không cần đặt kết nối. Bằng cách này, lỗi sẽ được đảo ngược và sửa chữa và trong tệp PHP của bạn, bạn sẽ có các ký tự ở định dạng UTF-8 chính xác.
  2. Trong tập lệnh PHP, hãy viết lại thông tin với việc đặt kết nối thành UTF-8
  3. Tại thời điểm này, bạn sẽ thấy ký tự chính xác trong cơ sở dữ liệu của bạn
  4. Bây giờ thay đổi tất cả các chức năng đọc/ghi của bạn của bạn để sử dụng UTF-8 kể từ bây giờ

Đã trả lời ngày 22 tháng 5 năm 2013 lúc 12:17May 22, 2013 at 12:17

Hướng dẫn php german character encoding - mã hóa ký tự tiếng Đức php

ArisarisAris

4.3871 Huy hiệu vàng39 Huy hiệu bạc36 Huy hiệu đồng1 gold badge39 silver badges36 bronze badges

Trong sử dụng HTML5


Trong HTML 4.0.1 sử dụng


Đã trả lời ngày 22 tháng 5 năm 2013 lúc 12:34May 22, 2013 at 12:34

AmiramirAmir

4.0594 Huy hiệu vàng15 Huy hiệu bạc26 Huy hiệu đồng4 gold badges15 silver badges26 bronze badges

Các kết quả được mã hóa HTML được mã hóa như thể chúng được xử lý bởi htmlentity (), tôi tự hỏi liệu các biến của bạn có được Ibserted khi nhận được từ mẫu hay đang được xử lý bởi một trình soạn thảo WYSIWG không?

Dù sao, chúng nên in tốt trên mẫu HTML nhưng HTML_ENTITY_DECODE () nên làm điều đó.

Hi vọng điêu nay co ich

Đã trả lời ngày 26 tháng 12 năm 2013 lúc 21:24Dec 26, 2013 at 21:24

Đặt kiểu dữ liệu trong cơ sở dữ liệu của bạn để sử dụng UTF-8, điều này sẽ giải quyết vấn đề.

Đã trả lời ngày 4 tháng 2 năm 2015 lúc 16:53Feb 4, 2015 at 16:53

Tôi đã từng gặp vấn đề tương tự. mà tôi đã giải quyết bằng cách sử dụng:

Nếu bạn đã tạo bảng của mình, bạn cần sửa đổi bộ ký tự là:

alter table  convert to character set utf8 collate utf8_general_ci.

Bộ ký tự bảng của bạn được đặt thành

SET CHARSET 'utf8';
8 theo mặc định bởi MySQL.
SET CHARSET 'utf8';
8
by default by MySQL.

Ngoài ra, bạn có thể phải đối mặt với một số vấn đề trong khi truy xuất dữ liệu và hiển thị nó cho bạn. ví dụ:

mysql_connect('localhost','root','');
mysql_select_db('my db');
mysql_set_charset('utf8');

Hướng dẫn php german character encoding - mã hóa ký tự tiếng Đức php

Ferrmolina

2.7372 huy hiệu vàng27 Huy hiệu bạc45 Huy hiệu đồng2 gold badges27 silver badges45 bronze badges

Đã trả lời ngày 24 tháng 12 năm 2013 lúc 7:32Dec 24, 2013 at 7:32

Hướng dẫn php german character encoding - mã hóa ký tự tiếng Đức php

Freerunnerfreerunnerfreerunner

5561 Huy hiệu vàng5 Huy hiệu bạc15 Huy hiệu đồng1 gold badge5 silver badges15 bronze badges

Bạn sẽ cần phải làm điều này cho

$title = mysql_real_escape_string(htmlentities($_POST['title']));
0

SET CHARSET 'utf8';
0

và cho

$title = mysql_real_escape_string(htmlentities($_POST['title']));
1

SET CHARSET 'utf8';
1

Hướng dẫn php german character encoding - mã hóa ký tự tiếng Đức php

Sachu

7.3697 Huy hiệu vàng51 Huy hiệu bạc92 Huy hiệu Đồng7 gold badges51 silver badges92 bronze badges

Đã trả lời ngày 21 tháng 11 năm 2014 lúc 8:07Nov 21, 2014 at 8:07

xelilofxelilofxelilof

4563 Huy hiệu bạc11 Huy hiệu đồng3 silver badges11 bronze badges