php - mysql 列的最大长度并确保我不会使用 utf8_unicode_ci - PHP 超过该限制?

标签 php mysql string text unicode

我在 mysql 中使用一个 TEXT 列,它是 ut8_unicode_ci 来存储一些从互联网上抓取的数据。

收集的文本来自不同语言的不同网站。

我对 TEXT 列的最大 65535 字节长度感到困惑。

如何检查我插入到列中的字符串是否超过该限制?

此时我正在使用 strlen($str) 检查字符串的长度,但是通过使用它可以确保数据不会被截断以适合列据我了解 utf8_unicode_ci 每个字符可以超过 1 个字节?

最佳答案

编辑:OP 可以简单地使用 strlen(),因为它返回字节,而不是字符。证人:

$ cat test.php
#!/usr/bin/php -q
<?php
echo strlen("דותן כהן")."\n";
echo mb_strlen("דותן כהן", "UTF-8")."\n";
?>

$ ./test.php 
15
8

归功于 deceze在这篇文章的评论中。

旧帖如下:

PHP手册的注释有a handy function for determining how many bytes are in a string .这似乎是使用 MYSQL built in functions such as LENGTH to do the job 的唯一替代方法,这在这里会很麻烦。

还有另外两种可能的解决方法。首先,您可以将字符串写入文件并检查文件的大小。其次,你可以在 mb_strlen 上强制进行 ASCII 编码,然后它会将每个字节视为一个字符,因此它返回的字符数实际上就是字节数。我没有测试过这个,所以先检查一下。让我们知道什么对您有用!

关于php - mysql 列的最大长度并确保我不会使用 utf8_unicode_ci - PHP 超过该限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11008505/

相关文章:

php - XAMPP 使用 PHP/MySQL 运行速度非常慢

mysql - mysql中如何选择最大的值之和

mysql - 计算具有三个表的新列

javascript - HTML 输入 - 删除前导字符

javascript - 为数组中的每个单词添加空格

PHP插入数据库不工作

php - 同一输入的哈希值总是不同

c# - 如何拆分具有多个分隔符的字符串

php - Woocommerce:用户只能购买一次产品

mysql - 如何将两个 COUNT() 语句合二为一并求出差值?