最近在工作中遇到了飞鹅打印机打印出来中文变成  ‘???’的乱码问题。我们的后端使用的PHP,把拼接好的字符串转换成json格式,然后请求飞鹅云打印机的接口。由于打印排版问题,有的字符串截取开放到第二行显示。结果在测试的时候却发现了打印出来的小票存在乱码问题。排查了一下,代码在字符串在第二十一个字符处截取开,飞鹅打印机默认一个汉字占三个字符,这样截取是不会霸汉字断开的。但字符串中如果加入英文,空格之类的,就可能导致在第二十一个字符处截取时把汉字断开,出现“???”的乱码问题。

我看了下代码发现截取字符串是用的substr() 函数用于从字符串中获取其中的一部分,返回一个字符串。

php中另一个函数 mb_substr可以解决这个问题。

其实substr、mb_substr、mb_strcut这三个函数都用来截取字符串,区别在于:

substr是最简单的截取,无法适应中文,截取中文会产生半个字符的现象,出现乱码;

而mb_substr,mb_strcut是按字符来切分字符串,截取中文不会产生半个字符的现象;

不过要注意的是mb_substr,mb_strcut的使用要开启php.ini里面extension=php_mbstring.dll扩展。

打印机打印中文,截取字符时出现乱码问题相关推荐

  1. php调试代码时var_dump( )打印中文字符时出现乱码解决方案

    php调试代码时var_dump( )打印中文字符时出现乱码解决方案 参考文章: (1)php调试代码时var_dump( )打印中文字符时出现乱码解决方案 (2)https://www.cnblog ...

  2. 斑马打印机打印中文乱码的问题

    斑马打印机打印中文乱码的问题 前些天公司有需求需要使用web打印,咱也没弄过也没接触过呀,这种情况只能上官网看看了,因为我是用的是java环境,所以以下只介绍在java环境下解决的办法.这需要下载开发 ...

  3. R语言xlsx包读取含中文Excel文件时出现乱码或“多字节字符串6有错”的解决方案

    R语言处理含中文Excel文件时,由于编码的不一致,总会出现各种各样的问题.例如,使用xlsx包读取xlsx文件时,若内容中含有中文,就会出现乱码,甚至会报错. 例如使用这个表格: data1 < ...

  4. c mysql 中文字符_在C#和MySQL中存取中文字符时避免乱码的方法

    当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码. 由于中文字符采用双字节表示,所以对含有中文的字符串的处 ...

  5. c# mysql 汉字乱码_在C#和MySQL中存取中文字符时避免乱码的方法

    当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码. 由于中文字符采用双字节表示,所以对含有中文的字符串的处 ...

  6. 关于c语言在循环赋值字符时出现乱码情况

    c语言有个很奇怪的情况,有时候我们使用循环给一个新的字符数组赋值时打印出来的字符串是乱码,明明赋值都没有错: 但是运行起来是这样的: 当循环次数大于等于3时: 最后经过测试发现:在某些编译器当循环小于 ...

  7. STM32移植时printf串口打印中文乱码,mark一下

    STM32移植后,使用printf进行串口打印,中文显示乱码: 移植时是先新建.txt文档,复制完代码后改为.c文件,查找相关资料,得知.c文件为"UTF-8"编码,需要将编码格式 ...

  8. php chr() ord()中文截取乱码问题解决方法

    今天看到chr() ord()中文截取乱码问题这个例子,觉得相当的不错,拿出来和大家分享下,有兴趣的朋友可以去试下,看看怎么样. 代码如下:<?php $lenth = 19; $str = & ...

  9. 【Java10】lambda表达式(函数式编程),Stream流,File类,字节/字符流,乱码,缓冲/转换/序列化/打印流,Properties

    文章目录 1.lambda表达式标准语法:()->{} 2.lambda表达式简略语法:可推导即可省略 3.lambda表达式原理:lambda效率比匿名内部类高 4.两个函数式接口:Consu ...

  10. wml在文本框中输入中文关键字搜索时,服务端获取到的值总是乱码的解决方法。...

    wml在文本框中输入中文关键字搜索时,服务端获取到的值总是乱码,该如何解决? 现提供一个客户端对关键字编码,服务端再解析的方法,应该可以完美的解决这一问题. wml文件: <?xml versi ...

最新文章

  1. CSS hack:针对IE6,IE7,IE8,IE9,firefox显示不同效果
  2. SpringBoot+MyBatisPlus实现插入关联多表数据的接口(企业质检管理举例)
  3. POJ - 3261 Milk Patterns(二分+后缀数组)
  4. 程序员们请别做下一个小贝
  5. java typereference_记录一下jackson中TypeReference的使用
  6. Python多线程--UDP聊天器
  7. 数据驱动工程:跟踪使用,合理决策
  8. Maven+Eclipse+SparkStreaming+Kafka整合
  9. Coprime Sequence
  10. [leetcode]241. 为运算表达式设计优先级
  11. tek示波器软件_给示波器以云空间,泰克发布突破性的数据协同软件TekDrive
  12. oracle数据库赋权_Oracle数据库权限
  13. 图片压缩大小的3种方法,简单快捷实用!
  14. 程序员人生之路(强烈推荐,分析的透彻!)
  15. 跨境电商特点有哪些?
  16. Mybatis简介及其核心概念
  17. 文字翻译软件哪个好用?亲测好用的软件分享
  18. 基金从业-(1、2)
  19. 1.5万倍超高回报率、融合盲盒玩法背后,NFT仍是巨鲸乐园
  20. oracle emp imp 使用介绍

热门文章

  1. QObject::connect: Cannot connect QTimer::timeout() to (null)::fuction()
  2. 使用busybox制作rootfs
  3. 漫谈程序员系列 软件开发的十八般乐趣
  4. python 文件读取
  5. 【华为OD机试真题 JAVA】字符统计及重排
  6. 精算未来会被计算机代替吗,年薪过百万还不用加班?揭开精算专业的真面目(下篇)...
  7. (六)jmeter接口自动化难点系列---jmeter使用base64解密
  8. unix 创建html文件路径,Btrfs 创建目录和文件的操作
  9. React实现微信公众号支付
  10. Softmax和关于它的交叉熵损失函数详细求导过程