zoukankan      html  css  js  c++  java
  • 排除utf-8字串中的特殊字符

    今天遇到了字串相关Bug,大概描述一下,就是在导入Fbx的时候,字符串中有特殊字符(PS,如'?',')' )等字符,导入的时候,如果按照原字符名称会出现问题。

    问题主要体现在两个方面:

    1.引擎和编辑器本身是做字符串压缩的,工程的长路径,在引擎中会用"asset:"标志,而fbx中有":"会影响编辑器的字串处理,导致面板不响应。

    2.如果用原字符串创建文件,可能导致文件创建失败,比如 AABB?.mesh,在fopen的时候文件名有操作系统不允许的字符导致创建失败。最后导致fbx不能完整的导出。

    问题的解决方案:

    问设计师,最后商量的解决方案,是把ASCII码中的特殊字符(128个中除去字母,数字和'_'的)转换为下划线,超出ASCII码127,则不处理。因为是UTF8编码,第一个字节

    超出0x1000则表示是多字节码(2-4),多字节码有可能是中文或者日文等别国语言。

    所以就引出了一个问题,如何判断UTF是否是ASCII码还是多国语言码?

    在下面的Po主的文章中找到了答案,里面说的很详细,了解了这个,解决的引出的问题就很简单了。

    http://blackdire.blog.sohu.com/181309341.html

    拓展阅读:

    http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

    Tips(CS学科肯定都知道就略过吧):

    std::string内存中看到的数值为负的,是负数的补码.

    补码 = 原码取反 + 1

    原码 = (补码 -1)取反。

  • 相关阅读:
    储存过程、游标与触发器
    linux系统安装mysql5.7.22
    为什么实体类要实现序列化
    jsp的语法
    jsp的原理
    转发和重定向的区别
    SpringCloud——简介,5大组件
    Java——线程,并发包(Lock、线程池)
    Spring Data JPA——基本使用
    SpringBoot
  • 原文地址:https://www.cnblogs.com/singmelody/p/3686302.html
Copyright © 2011-2022 走看看