Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql java与c程序,存储字符的差异_Java_Mysql_C_Character Encoding - Fatal编程技术网

mysql java与c程序,存储字符的差异

mysql java与c程序,存储字符的差异,java,mysql,c,character-encoding,Java,Mysql,C,Character Encoding,我有两个程序——第一个是写进mysql数据库的C程序。第二个是从mysql数据库读取数据的java程序。C程序读取特定目录中的文件列表,并在DB中插入文件名。Java程序读取这些行,并尝试使用这些文件名进行一些文件处理 特定文件名包含长破折号“–”字符。该文件名由java程序从DB中读取。但是,当它尝试打开文件系统上的文件以获取该条目时,文件名将不匹配 当我使用Java直接从文件系统读取文件名(包含“-”字符)时,“–”字符的字节显示为[-30-128-109]。Java从DB读取文件名时显示的

我有两个程序——第一个是写进mysql数据库的C程序。第二个是从mysql数据库读取数据的java程序。C程序读取特定目录中的文件列表,并在DB中插入文件名。Java程序读取这些行,并尝试使用这些文件名进行一些文件处理

特定文件名包含长破折号“–”字符。该文件名由java程序从DB中读取。但是,当它尝试打开文件系统上的文件以获取该条目时,文件名将不匹配

当我使用Java直接从文件系统读取文件名(包含“-”字符)时,“–”字符的字节显示为[-30-128-109]。Java从DB读取文件名时显示的字节(文件名由C程序转储),而在Java中,'-'字符的字节显示为[-61-94-30-126-84-30-128-100]

这与C程序用于将entried放入mysql的字符集有关吗

请帮忙

谢谢,

-KeshavJava字符串由Unicode字符组成,而不是字节。所以问题可能是

  • 数据库在一种编码中添加了字符串,但认为它是另一种编码
  • Java应用程序正在错误地解释数据库的字符输出
  • 文件系统编码不是Java应用程序认为的那样
您是如何将字符串输入数据库的?您的表格定义是什么?您在客户端应用程序上使用什么连接编码


通常情况下,最好对所有内容使用utf8(表定义和连接编码)。如果您不这样做,您可能会以某种方式破坏一些东西。

通过对Mysql服务器的所有传入客户端连接强制执行UTF8连接编码,解决了这个问题。