原先QString("mystrr"),现在都不认了,必须都要加上L才行

原先:m_conn->put_HttpProxyAuthMethod("Basic");

现在:m_conn->put_HttpProxyAuthMethod(L"Basic");

同理:      handle = m_conn->openFile(UUU(strRemote) ,L"writeOnly",L"createTruncate"); 原因是库函数强求

前提:不使用VS2010开始的pragram指令

注意1:        if (m_conn->ProxyType=="WEBPROXY")  倒是不必改。加上L反而错误。

原因是三个重载函数里,没有wchar_t*或者QChar*的比较:

bool    operator==(QLatin1String other) const
bool operator==(const char * other) const
bool operator==(const QByteArray & other) const

注意2:        InsertLog("debug", m_taskname, strAction, tr("try to reconnect again...")); 插入的日志没有问题,说明对标准英文字符自动转成Unicode没有问题。

原因是,编译器以char*读取"debug"字符,但是没关系,在调用函数的时候,会自动调用

QString(const char * str)

从而成功把它转化成了一个正确的QString。同时赏析一下所有构造函数:

QString()
QString(const QChar * unicode, int size = -)
QString(QChar ch)
QString(int size, QChar ch)
QString(QLatin1String str)
QString(const QString & other)
QString(QString && other)
QString(const char * str)
QString(const QByteArray & ba)

还是不明白,为什么

InsertLog(L"debug")

会编译通不过呢?

注意3:        strRemote += "/dir.case"; 为什么这样写?加上L反而错误。

原因是9个重载函数里,没有wchar_t*或者QChar*的赋值(得注意,是QChar*,不是QChar):

QString &    operator+=(const QString & other)
QString & operator+=(QChar ch)
QString & operator+=(const QStringRef & str)
QString & operator+=(QLatin1String str)
QString & operator+=(const char * str)
QString & operator+=(const QByteArray & ba)
QString & operator+=(char ch)

---------------------------------------------------------------------------------

理论解释:

  • Qt5假定的执行字符集是UTF8,不再允许用户擅自改动。这样一来,Qt4中setCodecXXX的各种副作用不再存在,而且中文问题更为简单。

QString s1 = "汉语";
QString s2("漢語");
QString s3 = tr("中文")
QString s4 = QStringLiteral("中文");//只要字符串不需要翻译,请关注这个
QString s5 = QString::fromWCharArray(L"中文");
QString s6 = u8"中文";//C++11
QString s7 = tr(u8"中文")
...

所有这些在Qt5默认都会正常工作,唯一要求就是:确保你的C++的执行字符集(the execution character set)是UTF-8

  • 尽管 L"..."(wchar_t*) 在Windows下是UTF16,但是不具备跨平台性。

http://blog.csdn.net/dbzhang800/article/details/7542672

utf8格式源代码中的字符串,默认都会当作char来处理,除非用L""符号来修饰的更多相关文章

  1. 通过ABAP的标准功能,寻找源代码中的字符串

    程序名称: *ABAP_SOURCE_SCAN 查找 作用:通过这个标准程序,可以在系统的源代码中进行字符串的查找!

  2. 【php正则】php正则匹配UTF-8格式的中文汉字 和 【,】【,】【。】等符号

    1.php正则匹配UTF-8格式的中文汉字 和 [,][,][.]等符号 if (preg_match_all("/([\x{4e00}-\x{9fa5}]+((,)?)+((,)?)+(( ...

  3. 使用Microsoft Roslyn提取C#和VB.NET源代码中的字符串常量

    Microsoft Roslyn是微软.NET“编译器即服务(Compiler as a Service)”的主要产品,它提供了开放的编译器API,并为源代码产生.分析和重构提供了新一代的语言对象模型 ...

  4. VC 中与字符串相关的宏 _T、TEXT,_TEXT、L 的作用

    CSDN原博文:http://blog.csdn.net/houkai363/article/details/8134787 遇到了:不能将参数 1 从“const char [5]”转换为“LPCT ...

  5. VC 中与字符串相关的宏 _T、TEXT,_TEXT、L 的作用(简单明了)

    一. 在字符串前加一个L作用:    如  L"我的字符串"    表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节.   strlen("as ...

  6. 理解Java中的字符串类型

    1.Java内置对字符串的支持: 所谓的内置支持,即不用像C语言通过char指针实现字符串类型,并且Java的字符串编码是符合Unicode编码标准,这也意味着不用像C++那样通过使用string和w ...

  7. 让TinyXML保存文件为UTF-8格式

    TinyXML是个好东西,这个不用我多说了,我用它做过好几个项目,但这几个项目都只是从xml文件中获取信息,没有涉及到写文件,最近需要生成xml的配置文件,才注意到这个问题,那就是TinyXML似乎不 ...

  8. C语言中的字符串

    字符串 字符串 用双引号引起来的多个字符. 在C语言中字符串是用’\0’结束的.即每个字符串的最后一个字符是’\0’,但是结束符不显示,仅仅标志该字符串到这儿就结束了. 二.声明字符串 char *s ...

  9. LoadRunner 如何将英文的字符串转换成UTF-8格式的字符串?

    7.48  如何手动转换字符串编码 1.问题提出 如何将英文的字符串转换成UTF-8格式的字符串? 2.问题解答 可以使用lr_convert_string_encoding函数将字符串从一种编码手动 ...

随机推荐

  1. 套接字socket 的地址族和类型、工作原理、创建过程

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

  2. hdu 2519 新生晚会 排列组合

    通过阶段性计算减少一次性的大值计算 #include <stdio.h> int main() { int t, a, b, i; __int64 c; scanf("%d&qu ...

  3. objective-C学习笔记(五)函数成员:初始化器和析构器

    初始化器:init 对象初始化器: -(id)init 可以重载多个. 类型初始化器: +(id)initialize只能有一个. 对象初始化器: 初始化对象实例时,init通常和alloc(手动内存 ...

  4. mysql安装详细步骤图解

    本文转自http://blog.csdn.net/fanyunlei/article/details/21454645 别看图多,其实mysql的安装十分简单,一路next即可,只是注意倒数第三步,设 ...

  5. BZOJ 1996: [Hnoi2010]chorus 合唱队(dp)

    简单的dp题..不能更水了.. --------------------------------------------------------------- #include<cstdio&g ...

  6. mapreduce 关于小文件导致任务缓慢的问题

    小文件导致任务执行缓慢的原因: 1.很容易想到的是map task 任务启动太多,而每个文件的实际输入量很小,所以导致了任务缓慢 这个可以通过 CombineTextInputFormat,解决,主要 ...

  7. hive 分区操作记录

    创建分区: alter table table_name add partition (dt='20150423') location '/data/text/20150423';

  8. 不小心中了machook病毒

    此文运用的是优雅的Markdown而书 前段回家过年的日子,我心爱的小air在运行时不停的弹出"machook停止运行"的提醒,上网google一下不看不要紧,才得知是mac上的一 ...

  9. 13-C语言字符串函数库

    目录: 一.C语言字符串函数库 二.用命令行输入参数 回到顶部 一.C语言字符串函数库 1 #include <string.h> 2 字符串复制 strcpy(参数1,参数2); 参数1 ...

  10. step_by_step_G+入门-在线服务

    第一步:先大概介绍下我们的窗体的布局框架,窗体大体分为以下3大块: 顶部:也就是大的模块划分(比如首页,软件管家,在线服务等) 内容区域:根据选择的不同的顶部模块,进行不同的内容展示: 底部:设置,下 ...