setlocale 与 mbstowcs 的问题】的更多相关文章

序中,如果要将ASCII码字符串转换为宽字符(Unicode),可以利用标准C的mbstowcs函数. 微软在MSDN中有示例,如下: 然而,这段代码在处理含有汉字的字符串时就会出现问题.比如将: wchar_t *pwchello = L"Hi";  替换为wchar_t *pwchello = L"你好"; 查看运行结果就会发现,mbstowcs函数将汉字视作两个ASCII字符,这样一个汉字就变成了两个wchar_t.原因是mbstowcs需要我们明确的告诉他要…
C++的字符串转换函数mbstowcs使用时容易产生bug... rapidxml_utils.hpp 的file(const char*filename)函数内会异常宕机... 需要在函数最开始添加 locale::global(locale("")); from  http://blog.sina.com.cn/s/blog_55c1b83b0100wbah.html 1 问题 在 Windows XP 多语言简中环境下,用 VC2005 中的 std::fstream 打开中文名…
最近看公司的一些代码,发现一些地方调用了std::locale::global(locale("")); (c++) 和 setlocale(LC_ALL, "");(c). 如多字节字符转换为宽字符: setlocale(LC_ALL, "");const size_t len = byte_size / sizeof(wchar_t);size_t res = mbstowcs(buf, info, len); ifstream读取文本: s…
转自 http://www.blogjava.net/baicker/archive/2007/08/09/135642.html 转自 http://witmax.cn/character-encoding-notes.html 写了n年程序,近来在字符串上栽了.:( 认真的研究了一些关于字符串的文章,在此记下.许多关于字符串的问题,在文章最后的参考文章中,相信有更加深入和精确的描述.不过关于中文的处理,我想先补充一些自己的看法. 背景:WIN32 console程序,使用printf输出字符…
在C运行库提供的多字节字符-宽字符转换函数:mbstowcs()/wcstombs()中,需要用到全局变量locale( locale encoding ),以指定多字节字符的编码类型 1. 功能: 用来定义全局变量:locale(locale encoding) 头文件: setlocale <locale.h> ANSI, Win 95, Win NT_wsetlocale <locale.h> or <wchar.h>2. 原型: char *setlocale(…
setlocale 配置地域化信息. 语法: string setlocale(string category, string locale); 返回值: 字符串 函数种类: 操作系统与环境   内容说明 本函数用来配置地域的信息.参数 category 有下列的选择: LC_ALL 包括下面的全项选项都要. LC_COLLATE 配置字符串比较,PHP 目前尚未实作出来本项. LC_CTYPE 配置字符类别及转换.例如全变大写 strtoupper(). LC_MONETARY 配置金融货币,…
函数 size_t wcstombs(char *dest, const wchar_t *src, size_t n); //wide-character to a multibyte n:被写入到 str 中的最大字节数 size_t mbstowcs(wchar_t *dest, const char *src, size_t n); //multibyte to wide-character n:被转换的最大字符数 char *setlocale(int category, const…
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) Q: hubery@roaster:~$ locale locale: Cannot set LC_ALL to default locale: No such file or directory LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC=zh_CN.UTF-8 LC_T…
问题症状 -bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8) 解决方法 本地化是指不同地区用户在键盘上输入不同语言的字符集.例如 en_US 表示美国英语字符集,因此只有正确设置了服务器的字符集,服务器才能理解用户的输入字符.setlocale 命令可以帮助用户来设置本地化字符集. 出现以上问题是因为服务器无法理解 en_US.UTF-8 字符集,因此首先要在服务器上生成 en_US.UTF-8 字符集: su…
http://en.cppreference.com/w/c/string/multibyte/mbstowcs https://msdn.microsoft.com/fr-fr/library/eyktyxsx(v=vs.80).aspx…
App::getLocale();获取当前语言 App::setLocale();设置语言配置文件 语言配置文件config/app.php locale 是默认语言,fallback_locale为备用语言 语言字符串存放在resources/lang目录中,Blade模板引擎打印语言行{{ trans('messages.welcome') }} 思路是把当前的语言设定存在Session里头,然后再写个Middleware去截Http请求,在截住的请求里用Session里的语言设定值来设Lo…
对于setCharacterEncoding(java.lang.String),这个方法是javax.servlet.ServletRequest和javax.servlet.ServletResponse都有的.ServletRequest用它来设置对来自客户端请求的字节流的解码方式,ServletResponse用它来设置发送给客户端的字节流的编码方式.例如:ServletResponse.setCharacterEncoding("UTF-8"); 对于 setContentT…
setlocale函数 函数原型:char* setlocale (int category, const char* locale); setlocale位于头文件,setlocale() 函数既可以用来对当前程序进行地域设置(本地设置.区域设置),也可以用来获取当前程序的地域设置信息,使用setlocale需要两个参数 第一个参数category: 用来设置地域设置的影响范围.地域设置包含日期格式.数字格式.货币格式.字符处理.字符比较等多个方面的内容,当前的地域设置可以只影响某一方面的内容…
使用ssh远程登陆 IDC机房服务器,发现老是出现如下告警信息: -bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory -bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory -bash: warning: s…
1解决iterm远程登录主机报错 -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory  2 更改Mac本机的ssh_config,而不是更改服务器的  sudo vi /etc/ssh/ssh_config 注释掉   SendEnv LANG LC_*    3 重新登陆远程主机,解决…
. . . . . meld 是一款免费的文件比较工具,官网地址:http://meldmerge.org/ 在 Linux 环境使用 meld 的时候,可能会由于语言区域的配置问题导致它无法启动,会出现如下错误: >$ meld file1 file2 Traceback (most recent call last): File , in <module> locale.setlocale(locale.LC_ALL,'') File , in setlocale return _s…
前几天登录服务器发现出现了这些个警告,一直没时间去处理他,今天难得有空,处理一下并记录下来,希望可以帮助到有需要的朋友. 警告信息如下: Last :: from 10.0.0.1 -bash: warning: setlocale: LC_CTYPE: cannot change locale (zh_US.UTF-): No such file or directory -bash: warning: setlocale: LC_COLLATE: cannot change locale (…
本人使用mac系统,命令行工具使用的iterm2,登录自己的云主机的时候 每次都要提示如下错误 -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory 解决方法:打开iterm2的preferences的Terminal关闭最下面的 Set locale variables automatically 为什么会出现这个问题? 我们在mac上查看 $ echo $LC_…
解决方案: # set default language environment RUN locale-gen en_US.UTF- \ && dpkg-reconfigure locales ENV LC_ALL=en_US.UTF- ENV LANG=en_US.UTF- ENV LANGUAGE=en_US.UTF-8 OR: sudo locale-gen en_US.UTF-8 sudo dpkg-reconfigure locales vi /etc/default/local…
  $ uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux $ python --version Python 2.7.9 $ pip --version pip 8.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7) $ unset LC_ALL $ pip install…
setLocale是C库中的一个设置地域化信息的C函数. 函数原型为: char *setlocale(int category, const char *locale) 参数解释: category -- 这是一个已命名的常量,指定了受区域设置影响的函数类别. LC_ALL 包括下面的所有选项. LC_COLLATE 字符串比较.参见 strcoll(). LC_CTYPE 字符分类和转换.例如 strtoupper(). LC_MONETARY 货币格式,针对 localeconv(). L…
C/C++程序中,locale(即系统区域设置,即国家或地区设置)将决定程序所使用的当前语言编码.日期格式.数字格式及其它与区域有关的设置,locale设置的正确与否将影响到程序中字符串处理(wchar_t如何输出.strftime()的格式等).因此,对于每一个程序,都应该慎重处理locale设置. C locale和C++ locale是独立的.C locale用setlocale(LC_CTYPE, “”)初始化,C++ locale用std::locale::global(std::lo…
http://www.cnblogs.com/cnyao/archive/2010/05/06/1729220.html setlocale()函数是用来配置地域信息的,原本以为这个也是windows函数,结果居然是C++的标准函数,其头文件为<clocale>,按照一般的原则,所有原本C的函数被移植到C++标准库中时,是按照去掉后面的.h,前面加上c这样的原则.举例:<stdio.h>变成<cstdio>,所以我猜<clocale>也是这样,但是没有继续去…
今天发现用securecrt登陆时,gcc编译出错时会出现乱码,但直接在主机的窗口界面下用Shell编译却没有乱码.查看了一下当时的错误描述,发现它的引号是中文引号,导致在SecureCRT中显示出错: before numeric constant 在网上查了一下,可以通过修改LC_CTYPE=zh_CN.GBK解决这个问题,具体的方法有两个: 1. 通过export命令修改LC_CTYPE变量的值 tianfang > export LC_CTYPE=zh_CN.GBK    tianfan…
转自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/ [在此向原文作者说声谢谢!若有读者看到文章转载时请写该转载地址,不要写我的BLOG地址.尊重他人的劳动成果 ^_^ ] C 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的 locale 设定函数是 setlocale(),而 C++ 标准库有 locale 类和流对象的 imbue() 方法.这篇是我自己的 setlocale() 使用…
I have been quite annoyed by a Windows bug that causes a huge number of open-source command-line tools to choke on multi-byte characters at the Windows Command Prompt. The MSVCRT.DLL shipped with Windows Vista or later has been having big troubles wi…
用法示例 #include <Windows.h> #include <stdio.h> #include<locale.h> void main() { //setlocale(LC_CTYPE, "chs"); setlocale(LC_ALL, "zh-CN"); wchar_t wstr[] = L"hello你好"; wprintf(L"%ls", wstr); getchar()…
// crt_strlen.c // Determine the length of a string. For the multi-byte character // example to work correctly, the Japanese language support for // non-Unicode programs must be enabled by the operating system. #include <string.h> #include <local…
Example 1234567891011121314151617181920212223242526272829303132 /* setlocale example */ #include <stdio.h> /* printf */ #include <time.h> /* time_t, struct tm, time, localtime, strftime */ #include <locale.h> /* struct lconv, setlocale,…
docker中经常设置不了 环境变量$LC_ALL,  导致报很多奇怪的编码错误: /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) 解决方法: sudo localedef -i en_US -f UTF-8 en_US.UTF-8 https://www.cnblogs.com/ifantastic/p/4565822.html…