搜索
首页后端开发php教程PHP的base64_decode及写入mysql前的转义

我看到这个函数解码后返回一个string。
现在我编码前是一个二进制文件流,从图像文件读取来的。如果用这个函数解码并赋值给一个变量,那么应该默认就是一个string变量了。string变量可以存储二进制文件流吗?如果不能,应该怎么做,才能正确解码呢?

另外一个问题是,解码后要将这个二进制流存入到mysql的一个longblob字段里面,我需要对哪些字符进行转义?PHP是不是有专门的函数来一次性实现这个转义的?

补充一下我所用的编码和解码方式:

编码部分(VC端)

char buffer[102400];  //BUF_SIZE大小自己定义DWORD length;//照片图片FILE * pFile = fopen("photo.bmp", "rb");int img = fread(buffer, sizeof(char), 102400, pFile);//将文件二进制流读入到buffer中fclose(pFile);CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,NULL,&length);//获取存放编码后字串所需长度ImgString = new TCHAR[length];//ImgString是要发送给PHP的字串,根据上面获取的长度,初始化该字串length--;//减去最后字串结束符的位置CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,ImgString,&length);//向ImgString里面存放buffer的base64编码


解码并写入数据库部分(PHP+Mysql)

$face = addslashes(base64_decode(trim($_REQUEST['face'],"'")));$query = "update index_base set face=$face where id=$bid";$result = mysql_query($query);


回复讨论(解决方案)

印象中二进制文件和字符串没什么不同啊..

转义用addslashes或者mysql_real_escape_string

我得到的出错提示:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\0\0\0\0\0\06\0\0\0(\0\0\0f\0\0\0~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0' at line 1

印象中二进制文件和字符串没什么不同啊..

转义用addslashes或者mysql_real_escape_string


。。。二进制里面很多字串结束符的啊

那个出错提示里的错误位置,比mysql请求语句里面尝试写入的二进制流要短得多啊,不是已经转义过了吗,怎么还会截断?

请求里面是这个:
face=BMΗ\0\0\0\0\0\06\0\0\0(\0\0\0f\0\0\0~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 RZp?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????{??!0 \0\0 RZp??????????????w\\?|???\'?+??????????????????.?[?.+?{???z?z???????np?.0w|?????????????290ryp????|L?\\?|}??.??N???? 1?\00Q\0?q???1! ?`?pP?`@?P0?@ ?P1\0PA pa`??`??`??`??`??`??\0\0?P`?PP?PP?@@?0@? 0? 0? ? ? ? 0?0A\0@Q`Q pa0?qP??`??p??`??`??`??q\0?Q\0?a?……………………后面还有好长

行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟


行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟


即使不解码、不转义,也是错的。

Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Qk3OlwAAAAAAADYAAAAoAAAAZgAAAH4AAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAcID' at line 1Whole query: update index_base set cardtype=1, name='杨妍', sex='0', nationality='汉', birth='19850906', address='南京市鼓楼区广州路213-1号',expiration='20210602', expirebegin='20110602',  cardid='321283198509060027',issued='南京市公安局鼓楼分局',SAMID= '05.03-20131218-0001645552-2769328138',IINSNDN='0000000000000000',face='Qk3OlwAAAAAAADYAAAAoAAAAZgAAAH4AAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAcIDwYGDgUFDgUFEAQFDwMEDgIDDQECDQECDQECDgIDDwMEEAQFEQYFEgcGEwgHFQoJFgsKFwwLFg4MFg8NGRIQHBUTHBcVHxoYHBYXGhMXFw8XFwsYDQgYBAUZUlpwo7DJqLXOrbnVsr7at8PftsLetsHftcDet8DeusPhvcbkwMnnw8vrxMzsxc3vxs7wyNDyxc3vwsrsvsbou8PlusLiucHht7/ftr7et8DeucLgusPhu8TiusPhucLguMHft8DeuMHfucLgusPhu8Tiu8XhvMbivcfjwMjkwcnlwsrmw8vnxMzoxc7nx9DpydLry9Ttoam/e4CTHSEwAwUQDxAXHBseExISDQgGDAcFDQYEDAUDDAQCDQUDEAUEEgcGFgkIFgkIFgkIFgkIFgkIFgkIAAAQBwgPBgYOBQUOBQUQBAUPAwQOAgMNAQINAQINAQIOAgMPAwQQBAURBgUSBwYTCAcVCgkWCwoXDAsWDgwWDw0ZEhAcFRMcFxUfGhgcFhcaExcXDxcXCxgNCBgEBRlSWnCjsMmotc6tudWyvtq3w9 2wt62wd 1wN63wN66w G9xuTAyefDy vEzOzFze/GzvDI0PLFze/Cyuy xui7w W6wuK5weG3v9 2vt63wN65wuC6w G7xOK6w G5wuC4wd 3wN64wd 5wuC6w G7xOK7xeG8xuK9x PAyOTByeXCyubDy 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 G x XAyefCy nEzevGzu7Gzu7GzvDGzvDHz/HFze/EzO7Dy 3CyuzCyurDy vEzOzFze3EzevEzevDzOrDzOrByui/yOa9xuS7xOK6w G5wuC3wN62v92zvdmwutatt9OttdGuttKvt9OwuNSxudWwudKvuNGut9Cut9CGjqRiZ3oPEyIAAQwAAQgDAgUIBwcQCwkOCQcOBwUMBQMMBAINBQMQBQQRBgUUBwYUBwYUBwYUBwYUBwYUBwYAAAsDBAsDAwwEBAwEBA0FBQ0FBQ0FBQ0FBQ0FBQwEBA0EBAwDAw4CAw4DAg4DAg8EAxAFBBEGBRIHBhIKCBMMChUODBcQDhcSEBoVExIPDwwICwkGDQgDDyAeLnl7j4qSqJypwqGux6ayzqq20q 717K 2rXA3rjD4b3G5L7H5cDJ58LL6cTM7MPL68PL7cPL7cPL7cLK7MHJ68DI6sDI6sHJ6cLK6sPL68XN7cTN68PM6sPM6sPM6sHK6MDJ577H5b3G5LzF47vE4rrD4brD4bfB3bS 2rG717G51bG51bK61rK61rO716 40ay1zqmyy6ewyX2Fm1ZbbhYaKQAACAAABQEAAwYFBQ4JBwwHBQ0GBAwFAw0FAw0FAxAFBBEGBRQHBhQHBhQHBhQHBhQHBhQHBgAACQMECgQEDQUFDgYGDwcHDwcHDwcHDwcHDwcHDgYGDgUFDQQEDgIDDgMCDgMCDgMCDgMCEAUEEgcGEgoIFAwKFQ4MFxAOGRIQHBUTFA4PDQkMCgcOCQQQJCIygYOXj5etnqvEoq/Ip7PPq7fTsLzYsr7atcDeuMPhvcbkvsflv8jmwMnnwsrqwcnpwcnrwMjqwMjqv8fpv8fpvsbovsbov8fnwMjowsrqxMzsw8zqw8zqw8zqw8zqwsvpwcrowMnnwMnnv8jmvsflvsflvsflu8XhucPftsDctr7atr7atr7atb3Ztb3Zr7jRqrPMpa7HoKnCc3uRSk9iHyMyAAAIAAAFAQADBQQEDQgGDAcFDQYEDQYEDgYEDgYEEAUEEAUEEwYFEwYFEwYFEwYFEwYFEwYFAAAGAwMHBAMKBAQKBAQNBQUNBQUNBQUNBQUNBQUMBAQMBAQMAwMNAQINAgENAgENAgEOAwIPBAMRBgURCQcTCwkTDAoUDQsWDw0YEQ8PDAwJBwoHBQwHAw8eHy54fZCKlKmdqsOhrsemss6qttKuutaxvdm0v922wd 7xOK8xeO9xuS x XAyOi/x e xui9xee9xee9xee9xee8xOa8xOa9xeW/x fAyOjCyurCy nCy nByujByujAyee/yOa x W9xuS9xuS9xuS9xuS x W7xeG5w9 3wd23v9u2vtq2vtq1vdm1vdmut9Coscqiq8Scpb5qcog7QFMYHCsAAAgAAAUBAAMEAwMLBgQLBgQNBgQNBgQOBgQOBgQQBQQQBQQSBQQSBQQSBQQSBQQSBQQSBQQAAAUCAgYDAgkDAwoEBAsFBQsFBQ0FBQ0FBQ0FBQwEBAsDAwsCAgwAAQwBAA0CAQ0CAQ4DAg8EAxAFBBEGBRMIBxIKCBILCRMMChQNCwwJCQcFCAUDCgQBDRgbKnF2iYaQpZypwqCtxqSwzKi00K251a 717K927XA3rrD4bvE4rzF473G5L7G5r3F5bzE5rvD5bvD5bvD5bvD5bvD5bvD5bzE5L7G5sDI6MLK6sHK6MDJ58DJ58DJ577H5b3G5LzF47vE4rzF473G5L3G5L7H5bzG4rrE4LjC3rjA3Le/27a 2rW92bW92a630KewyZ owZihumBofiswQxAUIwAACAAABQEAAwMCAgkEAgkEAgwFAwwFAw4GBA4GBBAFBBAFBBIFBBIFBBIFBBIFBBIFBBIFBAAAAgEBAwIBBgMCBwQDCAUECAUECgQECgQEDAQECwMDCwMDCQEBCQAACgIADQIBDgMCDwQDDwQDEAUEEAUEEQYFDwcFDwgGEAkHEQoICQYGBAIFAgEIAQAMExYlaW6BgoqgnKfAnqvEo6/Lp7PPq7fTrrrWsbzatL/ducLgusPhu8Tiu8TivMTku8PjusLkucHjuMDiuMDiuMDiuMDiucHju8PjvcXlv8fnwcnpwMnnv8jmvsflvsflvMXju8TiusPhucLgusPhvMXjvcbkv8jmvMbiusTguMLeuMDct7/btr7atb3Ztb3ZrLXOpK3GnKW lJ22Vl50GyAzCQ0cAAAIAAAFAQADAwICCAMBCAMBCwQCDAUDDgYEDgYEEAUEDwQDEQQDEQQDEQQDEQQDEQQDEQQDAAABAAABAAACAQADAgEHBAMHBAMJAwMJAwMLAwMKAgIKAgIJAQEJAAAKAgANAgEOAwIQBQQQBQQQBQQQBQQQBQQOBgQOBgQNBgQNBgQGAwMCAAMBAAcAAQwPEyJiZ3p hpyep8CfqsOjrcmnsc2sttKuuNSxuti0vdu4wd 4wd 5wuC6w G7w O5weG4wOK2vuC1vd 1vd 2vuC2vuC3v G5weG7w O9xeXAyOi/yOa x W9xuS9xuS7xOK6w G5wuC4wd 5wuC7xOK9xuTAyee9x O7xeG4wt64wNy3v9u2vtq1vdm1vdmrtM2iq8SYobqPmLFMVGoNEiUDBxYAAAgAAAUBAAMCAQEHAgAIAwELBAIMBQMPBwUOBgQQBQQPBAMQAwIQAwIQAwIQAwIQAwIQAwIAAAkICAMCAQEAAAEAAAcEAwcEAwkDAwkDAwsDAwoCAgkBAQgAAAcAAAgBAAoCAAsDAQ4DAg4DAg8EAw0FAw0FAw0FAw4GBA0GBA0GBAYDAgIBAgEABgABDAwRHVxicnmClpmiupumvqCrxKOwyai00Ku306661rG92bS/3bS/3bXA3rXA3rW/37S 3rS 3rO93bO937O937S 4LS 4LW/4bfB4bnD47vG5L3I5rzH5bvG5LvG5L3G5LvE4rnC4LfA3ra/3bXA3rfC4LjD4bnE4rbB37S/3bK927C72a661q 51a240a630KewyKCpwY YsH Gn0JJXAcLGgEFEAAACAAABQEBAgIBAAYCAAcDAAsFAAsFAAwFAwsEAgwEAgwEAg4DAg0CAQ0CAQ0CAQ0CAQ0CAQAAERAQBgUEAQAAAQAABwQDBgMCCAICCAICCAICBwEBCAAABwAABwAABwAACAEACQIADAQCDAQCDAQCDAQCDAQCDQUDDgYEDgYEDgYECAICAgECAQAGAQAMCg4aVlxsdH2Rlp 3maS8nqnBoq/IqLTQqrbSrbnVsLzYtL/ds77cs77csr3bsrzcsrzcs73ds73dtL7gtL7gtL7gtb/htsDit8HhucPjusXjvMflu8bku8bku8bkvcbku8TiucLgt8Detr/dtL/dtL/dtL/dtL/dsr3bsLvZrLrXq7nWqLfSqLTQp7LLp7DIoqzBn6e9iI jcneLOj1OAQQTAQMOAQIJAgIFBAMEBQIBBgIABwMACgQACgQACwQCCgMBCgMBCwMBDQIBDAEADAEACwAACwAACwAAAAAqKSkUExIBAAABAAAGAwIFAgEFAgEFAgEFAgEEAQAGAAAFAAAHAAAHAAAIAQAJAgAKAwEKAwELBAILBAILBAILBAINBQMNBQMOBQUIAgMCAQIAAAQAAAgTFyNMU2FtdomSnLGWorecp7 grcWntM2qt9CtudWuvdixv9ywvtuwvtuuvNmvudmwutqyvNyzvd20vuC0vt60vt61v9 2wOC3wuC4w G5xOK7xuS7xuS7xuS7xuS9xuS7xOK5wuC2wNy0vtqxvdmxvNquvNmtu9irudaquNWmttOks9Kjsc6irsqhrMWgqcGeqL2dprqBiJtla3shJjIAAg0AAwwFBAsFBAcFBAQFAwAGAgAGAgAGAgAGAgAIAQAIAQAIAQAIAQAJAQAJAQAJAQAIAAAIAAAIAAAAAENCQiMiIQMCAQMCAQYDAgUCAQUCAQQBAAQBAAQBAAYAAAUAAAUAAAUAAAYBAAYBAAkCAAkCAAoDAQoDAQsDAwsDAw0EBA0EBBAEBQgCAwIAAwAABQAACB0hLUJJV2dxgY arZSgtZumvp sxKazzKm2z6251a2817C 26 92q682ay6162316642LC62rK83LS 4LS 3rW/37bA4LfB4bfC4LjD4bjD4bnE4rrF47vG5LvG5L3G5LvE4rnC4LbA3LS 2rC82K 62Ku51qm31KW10qSz0qGx0KCw0Z2typ2pxZumv5miupukuJ6luHyCklxfbgoOGQAACQIDCgcGDAYGBwUEAwUDAAYCAAYCAAYCAAUBAAUAAAUAAAgBAAgBAAgAAAcAAAcAAAcAAAcAAAcAAAAAJiUlLy4tCAcGBQQDAwIBAgEAAgEAAQAAAQAAAQAAAwAAAwAAAwAAAwEAAwEAAwEABgEABgEACQIACgMBCwMDCwMDDAMDDQQEEAQFCgIDBAADAAAEAAAHFholNTxKXmh4ipWoj5yvl6O4nKnBpLHKpbXNqbjTqrvWrr7brLzZqrrXqLjVqbbVq7jXrbrZr7zbtL7gtL7etb/ftcDetsHftsHftsHftsHftsHft8LguMPhucTivcbkusTgt8HdtL7asrzYrbnVq7bUprTRorLPn7DNna3MmazKlqvLlabDlKO kZ62kZuwjpeqjpWjYmdzNTlEBAcQAAAFAAACBgYHBQUFBQQDBQQABgIABQEABQEABQEABQEABQEABgEABgEACQEBCAAACAAABwAABwAABwAAAAALCgo8OzoODQwIBwYCAQACAQACAQABAAABAAABAAABAAABAAADAAADAQADAQADAQAEAgAEAgAGAQAHAgAKAgIKAgIMAwMNBAQQBAULAwQHAAQBAAQAAAcQFB8nLjxVX2 GkaSMmayUoLWap7 jsMmktMyot9KputWtvdqquteouNWmttOks9KnttWsudivvNu0vuC0vt61v9 1wN62wd 1wN60v92zvtyyvdu0v922wd 4w G8xeO5w9 2wNyzvdmxu9ert9Oos9GisM2cq8qZqciVqMiSpsiRpMmNoMCLm7iJlq IkqeAiZx8g5FGSlUSExoAAAYAAAQAAAIFBAUEAwMEAwIFBAAGAgAFAQAFAQAFAQAFAQAFAQAGAQAHAgAJAwMIAgIHAQEGAAAGAAAGAAAAAAcGBisqKSAfHhEQDwIBAAEAAAEAAAEAAAEAAAEAAAEAAAEAAAEAAAEBAAEBAAEBAAEBAAEBAAQCAAcCAAoCAgoCAgwDAw0EBBAEBQsDBAgBBQIABQAABQoPGBoiLU1YZoOOoImWqJCfspimu6GuxqKyyqS10Ki51Ky82am51qe31KS00aGwz6W006m416672rS 4LS 3rS 3rS/3bXA3rO 3LK927C72a 62LG82rS/3bb
…………
中间省略大段字符串
…………
7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v4AAP7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /v7 /gAA妄?????? where id=55556

不解码直接写入成功了。单引号改成双引号就可以了。
然后我试了下用同样的方法写入解码之后的值,也比以前好一点,至少这个长串数据前面有一段能正确识别,mysql报错的位置从数据串中间开始的。

不知道我解码再转义后是否能正确?

base64_encode后的就是字符串了,直接用base64_encode后的入?,出的?候再用base64_decde ??一次就可以了。

尾部的 .../v7 /v7 /gAA妄??????  哪里来的?
 这些是图片数据?显然是未经base64 编码的,因为 base64 编码中只有 数字、大小写字母和 /-= 3个符号

行进中的是流,静止下来就是字符串
二进制文件和文本文件的区别在与前者没有文件结束符 ox1a
既然你发送的是 base64 编码所谓数据,那么入库时不需要解码,并且也不需要转义
待日后还原数据时再解码不迟


我把二进制写进去了……但是图片完全损坏了。
在NaviCat里面可以看到图片的样子,身份证头像脖子领口以上完全歪到图片外面去了,没歪出去的部分也是很多彩色噪点,基本分辨不出来是什么。
如果把二进制字段另存为一个文件,那就根本打不开。

尾部的 .../v7 /v7 /gAA妄??????  哪里来的?
 这些是图片数据?显然是未经base64 编码的,因为 base64 编码中只有 数字、大小写字母和 /-= 3个符号


我在VC端调试看了发送前的编码串,就是那个样子,看来是我编码不对了啊?

base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了

base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了


我用了wincrypt.h和crypt32.lib。而且两个是在不同地方下载的。会不会版本不一样哦。明天去公司看看。

在网上找个Base64编码的C源代码试试吧,很多啊。而且有很多在线编码的网页可以用来验证编码和解码是否正确:http://www1.tc711.com/tool/BASE64.htm

base64 编码只不过是将 3 个字节扩展成 4 个字节,是的每个字节的有效二进制位为 6 位,即十进制 0 ~ 63 供 64 种状态,故名 base64
我不是很清楚你做编码是使用库函数,还是自己写的代码
但从生成的串上看,肯定是弄错了


是在C语言里编码的时候,长度少了一位,把字符串结束符给截掉了。
改成JpgBack = new TCHAR[length+1];,后面的lentth--删掉,就没有乱码了。

但是还有个问题怎么解决啊,我得到的字串每64个字符就有一个换行。怎么把换行截掉?

对应该是 需要的长度 + 1个结束位
每64个字符就有一个换行?是一个回车一个换行吧?
这是正常的传输格式(RFC 2045),目的是能快速校正传输中的漏码
到解码时删掉就行了

对应该是 需要的长度 + 1个结束位
每64个字符就有一个换行?是一个回车一个换行吧?
这是正常的传输格式(RFC 2045),目的是能快速校正传输中的漏码
到解码时删掉就行了


我现在已经找到办法删掉回车和换行了。
但是,但是又出问题了。。。

传输过去之前的编码是正常的,我能用网上找到的编解码器恢复成图像。
而且我是特地断点检查了发送前的postdata字串里面的,都是对的。
但是一旦传递到PHP这边,我用$face = $_REQUEST['face'];接收传参,立刻die ($face),结果出来的字串,所有的加号(+)全部被替换成了空格。

这是怎么回事啊

我知道这些都能在日后读取的时候处理,但是我们老板不懂技术,我最好是从mysql里面复制出来直接能解码给他看。。。

+ 变成 空格 是 URL 解码的功劳
$face = str_replace(' ', '+', $_REQUEST['face']);
换回来就是了

$img = base64_decode($face);
还原回图片数据了

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Java 中使用 OpenCSV 读取和写入 CSV 文件的示例Java 中使用 OpenCSV 读取和写入 CSV 文件的示例Dec 20, 2023 pm 01:39 PM

Java中使用OpenCSV读取和写入CSV文件的示例CSV(Comma-SeparatedValues)指的是以逗号分隔的数值,是一种常见的数据存储格式。在Java中,OpenCSV是一个常用的工具库,用于读取和写入CSV文件。本文将介绍如何使用OpenCSV来实现读取和写入CSV文件的示例。引入OpenCSV库首先,需要引入OpenCSV库到

解决PHP写入txt文件中文乱码的技巧解决PHP写入txt文件中文乱码的技巧Mar 27, 2024 pm 01:18 PM

解决PHP写入txt文件中文乱码的技巧随着互联网的迅猛发展,PHP作为一种广泛应用的编程语言,被越来越多的开发者所使用。在PHP开发中,经常需要对文本文件进行读写操作,其中包括写入中文内容的txt文件。然而,由于编码格式的问题,有时候会导致写入的中文出现乱码。本文将介绍一些解决PHP写入txt文件中文乱码的技巧,并提供具体的代码示例。问题分析在PHP中,文本

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

PHP文件处理入门:读取与写入的步骤指引PHP文件处理入门:读取与写入的步骤指引Sep 06, 2023 am 09:58 AM

PHP文件处理入门:读取与写入的步骤指引在Web开发中,文件处理是一项常见的任务,无论是读取用户上传的文件,还是将结果写入文件供后续使用,理解如何在PHP中进行文件处理都是至关重要的。本文将提供一个简单的指引,介绍PHP中文件的读取和写入的基本步骤,并附上代码示例供参考。文件读取在PHP中,可以使用fopen()函数打开一个文件,返回一个文件资源(file

mysql怎么删除unique keymysql怎么删除unique keyMay 12, 2022 pm 03:01 PM

在mysql中,可利用“ALTER TABLE 表名 DROP INDEX unique key名”语句来删除unique key;ALTER TABLE语句用于对数据进行添加、删除或修改操作,DROP INDEX语句用于表示删除约束操作。

如何通过PHP实现Modbus TCP的批量读取和写入如何通过PHP实现Modbus TCP的批量读取和写入Jul 17, 2023 pm 03:54 PM

如何通过PHP实现ModbusTCP的批量读取和写入一、ModbusTCP简介ModbusTCP是一种基于TCP/IP协议的工业通信协议,常用于工控领域中的设备通信。通过使用ModbusTCP协议,可以实现设备之间的数据读取和写入操作。本文将针对使用PHP语言实现ModbusTCP的批量读取和写入进行介绍,并附上相应的代码示例。二、环境准备在开始编

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具