我在 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/