我在以 utf-8 编码写入 mysql DB 时遇到问题。我的申请有点复杂,所以我会尽量具体。(我的应用程序需要斯洛伐克语特殊字符(在 utf-8 中有),例如 ľščťžýáí 等。
我正在运行 debian。我相信我的语言环境设置正确,但可以肯定的是:
root@radiator:/var/scripts# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=sk_SK.UTF-8
LANGUAGE=sk_SK.UTF-8:cs_CZ.UTF-8
LC_CTYPE="sk_SK.UTF-8"
LC_NUMERIC="sk_SK.UTF-8"
LC_TIME="sk_SK.UTF-8"
LC_COLLATE="sk_SK.UTF-8"
LC_MONETARY="sk_SK.UTF-8"
LC_MESSAGES="sk_SK.UTF-8"
LC_PAPER="sk_SK.UTF-8"
LC_NAME="sk_SK.UTF-8"
LC_ADDRESS="sk_SK.UTF-8"
LC_TELEPHONE="sk_SK.UTF-8"
LC_MEASUREMENT="sk_SK.UTF-8"
LC_IDENTIFICATION="sk_SK.UTF-8"
LC_ALL=
我有 bash 脚本,它应该写文本(用斯洛伐克语写到 DB。)(第一个哈希字符是因为 debian 不知道使用 BOM,仍然不知道如何处理它)
#
#!/bin/bash
table=$1
cycle=$2
sstart=$3
eend=$4
dbtext=$(cat /var/www/vids/$5/vars/$5.recogn.p.tmp2)
qry="INSERT INTO \`video\`.\`$table\` (\`DB_ID\` , \`LNX_ID\` , \`STIME\` , \`ETIME\` , \`TEXT\` ) VALUES ( NULL , '$cycle', '$sstart', '$eend', '$dbtext');"
mysql --host=localhost --database 'video' --user=uzivatel --password=heslo << eof
$qry
eof
这是提到的 tmp2 文件的内容(该文件的编码是 utf-8):
Tá žena držal poznali poznal jeho rodičov poznali podsvetie hodváb ulsteru mám ostatných tak veľmi dobre ako boli pre nato že sa bude vydávať ale skóre nevyšlo to potom zas nasťahovala.
在 phpmyadmin 中它看起来像:
Tá žena držal poznali poznal jeho rodiÄov poznali podsvetie hodváb ulsteru mám ostatných tak veľmi dobre ako boli pre nato že sa bude vydávaÅ¥ ale skóre nevyÅ¡lo to potom zas nasÅ¥ahovala.
(此字段中的编码为 utf8_slovak_ci )(谷歌浏览器编码为 utf8)。
我花了一整天的时间来谷歌这个,我不知道是什么问题。请你帮助我好吗 ?我知道你是最好的.. :)