我想在将丹麦字符发送到数据库之前对其进行编码。
我尝试将此功能应用于他们:
private function process_array_elements(&$element){
$element = utf8_encode($element);
$element = strip_tags( $element );
$element = strtolower ( trim ( $element ) );
$element = mysql_real_escape_string($element);
return $element;
}
Run Code Online (Sandbox Code Playgroud)
像这样:
$this->check_line_two = $this->process_array_elements($e);
Run Code Online (Sandbox Code Playgroud)
现在,每当我尝试将字符串发送到数据库时:
mysql_query("SET NAMES 'utf8'");
$query="INSERT INTO result_scanned
SET line_one= '$this->check_line_one',
line_two='$this->check_line_two',
line_three='$this->check_line_three',
advert_id='$this->advert_id',
scanned='$this->scan_result'";
Run Code Online (Sandbox Code Playgroud)
我明白了:
Incorrect string value: '\xE3\x83\xE2\xB8r ...' for column 'line_three' at row 1
Run Code Online (Sandbox Code Playgroud)
表中字段的数据类型是 UTF-8 ( utf8_unicode_ci),因此我必须使用相同的格式对我的字符串进行编码
这个线程与我的问题有关:Detect encoding and make everything UTF-8。
但是,在将任何字符插入数据库之前,我需要知道如何将其编码为 UTF-8,否则,我会收到上述错误。我想在将它们放入数据库之前,我需要首先确定我收到的字符类型。
utf8_unicode_ci是排序规则,您还需要字符集utf8:
CREATE TABLE someTable DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
为了更好地衡量,请确保在使用 PHP 连接到 MySQL 时一切都是 UTF-8:
mysql_connect ("localhost", "DB_USER", "DB_PASSWORD") or die (mysql_error());
mysql_select_db ("DATABASE_NAME") or die (mysql_error());
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_database=utf8");
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_server=utf8");
mysql_query("SET NAMES 'utf8'");
Run Code Online (Sandbox Code Playgroud)
这就是我在我运行的希伯来语胡言乱语翻译网站上连接的方式,它处理我自己或用户扔给它的所有内容。