问题描述
System::Text::RegularExpressions里的Regex是如何处理一些非ASCII编码的文本的呢?比如utf8,gb2312,sjis等还是仍然按照ASCII的处理方式去处理呢?我试了一下,比如说gb2312编码的“郂”这个字,他的末字节在ascii里对应的是“@”String^pattern=gcnewString("@");String^line=gcnewString("郂");Regex^regex=gcnewRegex(pattern);Match^m=regex->Match(line);发现是无法匹配的。难道Regex会根据当前的系统编码去处理匹配?那么如果想让他处理utf8格式的文本,需要做额外的编码的设置么?
解决方案
解决方案二:
自己顶啊顶
解决方案三:
.net项目是unicode的每个字符占2个字节
解决方案四:
Encoding类
解决方案五:
引用2楼hdt的回复:
.net项目是unicode的每个字符占2个字节
那我硬编码传进去的他都给我转成unicode?另外他怎么知道我是什么编码的文字传进去的?不知道这个不好自动转吧
解决方案六:
引用2楼hdt的回复:
.net项目是unicode的每个字符占2个字节
用这个会影响regex的行为?
解决方案七:
建议楼主先去了解什么是regex
解决方案八:
引用6楼hdt的回复:
建议楼主先去了解什么是regex
呃这个就不用了用regex好多年了只是第一次用到windows里.net的这个regex并且对编码也是有所了解的只是不知道.net里的regex对编码的行为如何如果这位大哥很清楚的话还请指教
解决方案九:
引用3楼cj205的回复:
Encoding类
用这个会影响regex的行为?
解决方案十:
引用7楼blueiris的回复:
引用6楼hdt的回复:建议楼主先去了解什么是regex呃这个就不用了用regex好多年了只是第一次用到windows里.net的这个regex并且对编码也是有所了解的只是不知道.net里的regex对编码的行为如何如果这位大哥很清楚的话还请指教
你既然知道,就应该清楚regex是针对字符串,而不是字节的
解决方案十一:
引用9楼hdt的回复:
引用7楼blueiris的回复:引用6楼hdt的回复:建议楼主先去了解什么是regex呃这个就不用了用regex好多年了只是第一次用到windows里.net的这个regex并且对编码也是有所了解的只是不知道.net里的regex对编码的行为如何如果这位大哥很清楚的话还请指教你既然知道,就应该清楚regex是针对字符串,而……
没太明白你的意思。不管了,可否就帮我解释以下下面的问题呢?比如说gb2312编码的“郂”这个字,他的末字节在ascii里对应的是“@”String^pattern=gcnewString("@");String^line=gcnewString("郂");Regex^regex=gcnewRegex(pattern);Match^m=regex->Match(line);发现是无法匹配的。我对“郂”实行了硬编码或者读文件里直接读取应经保证了他在传给String类时一定是gb2312编码的“郂”而不是utf-8或者sjis的等等并且我在日文和中文系统上编译或者运行的结果都是一样的
解决方案十二:
引用2楼hdt的回复:
.net项目是unicode的每个字符占2个字节
另外如果他底层是针对unicode的那么他是如何判断我传给他的是gb2312的还是sjis的呢?只有知道了这些他还好去转码为unicode的呀