Php 网站排序问题

Php 网站排序问题,php,html,mysql,utf-8,collation,Php,Html,Mysql,Utf 8,Collation,我正在制作一个网站,其中信息以立陶宛语存储。 它基本上由所有拉丁字母和一些独特的字母组成: Ąą、č、Ę、Ė、Į、š、Ų、ū、Ž 我正在尝试将数据库排序规则设置为utf8_general_ci或cp1257_lithuanian_ci。 不过,我更喜欢使用utf8\u general\u ci 在第页上打印立陶宛文字时,这两种排序都可以很好地工作, 但是php代码似乎不理解立陶宛字符。例如— 当我尝试将所有立陶宛字符交换为类似的拉丁字母(Ą=A,Ė=E)时 无法将这些字母与代码中描述的立陶宛字母

我正在制作一个网站,其中信息以立陶宛语存储。 它基本上由所有拉丁字母和一些独特的字母组成: Ąą、č、Ę、Ė、Į、š、Ų、ū、Ž

我正在尝试将数据库排序规则设置为utf8_general_ci或cp1257_lithuanian_ci。 不过,我更喜欢使用utf8\u general\u ci

在第页上打印立陶宛文字时,这两种排序都可以很好地工作, 但是php代码似乎不理解立陶宛字符。例如— 当我尝试将所有立陶宛字符交换为类似的拉丁字母(Ą=A,Ė=E)时 无法将这些字母与代码中描述的立陶宛字母匹配。当我试着将立陶宛文字小写时,立陶宛字母会变成两个拉丁字母

我应该试着改变什么来让它工作

编辑:

守则:

<?php
    echo 'ĄąČčĘęĖėĮįŠšŲųŪūŽž';
?>

确保您的文件是UTF-8,没有BOM编码

您的php页面应发送一个UTF-8标题:

header("Content-Type: text/html; charset=utf-8");

确保您的文件是UTF-8,没有BOM编码

您的php页面应发送一个UTF-8标题:

header("Content-Type: text/html; charset=utf-8");

你忘了一件事。您必须通知浏览器编码如下:

<meta charset='utf-8'>

或者这个:

<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

或者这个:

<?php
    header("Content-Type: text/html; charset=utf-8");
?>


如果您不通知浏览器编码-浏览器将使用其配置中的默认编码,或者它将尝试自动检测。

您忘记了一件事。您必须通知浏览器编码如下:

<meta charset='utf-8'>

或者这个:

<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

或者这个:

<?php
    header("Content-Type: text/html; charset=utf-8");
?>


如果您不通知浏览器编码-浏览器将使用其配置中的默认编码,或者它将尝试自动检测。

您必须注意的一件事是PHP没有为字符串定义内部编码:字符串只是字节数组,所以要在PHP中表示文本,您始终需要两件事:

  • 字节数组
  • 编码方案
  • 代码中出现的字符串文本的字节内容取决于生成文件的方式(具体来说,取决于文本编辑器使用的编码)。PHP解释器不关心脚本的编码,只要它是ASCII兼容的,那么解析器就可以正确地读取脚本并识别语法

    最后,要获得预期的文本字符串输出,需要将文本文件使用的编码传递给浏览器。这是在传输级别通过HTTP头完成的:

    Content-Type: text/html; charset=<INSERT YOUR SOURCES ENCODING>
    
    内容类型:text/html;字符集=
    

    在PHP中,头必须在使用函数
    header()

    进行任何输出之前发送。您必须注意的一点是,PHP没有为字符串定义内部编码:字符串只是字节数组,因此,要在PHP中表示文本,您始终需要两件事:

  • 字节数组
  • 编码方案
  • 代码中出现的字符串文本的字节内容取决于生成文件的方式(具体来说,取决于文本编辑器使用的编码)。PHP解释器不关心脚本的编码,只要它是ASCII兼容的,那么解析器就可以正确地读取脚本并识别语法

    最后,要获得预期的文本字符串输出,需要将文本文件使用的编码传递给浏览器。这是在传输级别通过HTTP头完成的:

    Content-Type: text/html; charset=<INSERT YOUR SOURCES ENCODING>
    
    内容类型:text/html;字符集=
    
    在PHP中,必须在使用函数
    header()

    的任何输出之前发送头。请参阅此答案:请参阅此答案: