<blockquote>
<p>The html form data to be posted is "αυτή είναι μια δοκιμή" and the end result inside database is "αÏÏή είναι μια δοκιμή"</p>
</blockquote>
<p>然而,“αΓτήείναιμιαδοκιμή”显然是无效的UTF-8,因为
第38位的字节(<code>ή</code>)表示它是一个两字节的UTF-8字符,但后面只有1个字节(<a href="https://onlineutf8tools.com/validate-utf8" rel="nofollow noreferrer">reference</a>)。在</p>
<p>如果这是传递给代码的数据,那么您需要检查并确认HTML表单以正确的UTF-8格式提交数据。在</p>
<pre><code><form accept-charset='UTF-8'>
</code></pre>
<p>假设您的输入字符串是正确的UTF-8编码,那么您的输出字符串“ÎÏÎÎÎÎνÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎ。在</p>
<p>因此,可以将问题(或传输形式)定义为上述的存储格式或HTML格式。在</p>
<blockquote>
<p>Yes MySQL Tables and Columns are configured to be <code>utf8_general_ci</code>.</p>
</blockquote>
<p>这也可能是个问题。MySQL<code>utf8_</code>是<em>而不是</em>完整的UTF-8(<a href="https://stackoverflow.com/a/279279/3536236"><strong>wat?!</strong></a>),因为它是3字节而不是4字节;因此,如果您存储了一个4字节的UTF-8字符,它将偏移<em>所有后面的字符字节</em>,使它们看起来像垃圾。在</p>
<h2>解决方案:</h2>
<p>将MySQL列和所有排序规则更新为<code>utf8mb4_unicode_ci</code></p>
<p>还要检查以确保MySQL传输机制也在使用<code>utf8mb4_</code>。在</p>
<h2>还有请<a href="https://stackoverflow.com/questions/279170/utf-8-all-the-way-through">Read This</a></h2>