我目前正在探索Digital Mars D语言的规范,并且在理解原始字符类型的完整性方面遇到了一些麻烦." 学习探戈与D "一书对该领域语言的能力和局限性同样含糊不清.
这些类型在网站上给出:
char; // unsinged 8 bit UTF-8 wchar; // unsigned 16 bit UTF-16 dchar; // unsigned 32 bit UTF-32
由于我们知道大多数Unicode转换(UTF)格式编码表示具有可变位宽的字符,这是否意味着D中的char只能包含适合8位的值,或者它是否在机器中扩展物理内存给你双字节字符?也许还有其他一些可能性,比如在重载变量时自动转换到下一个最合适的类型?
比方说,我想在编辑器中使用UTF-8字符并输入中文.它会简单地摔倒,还是能够更正确地处理Unicode字符,就像在C#中一样?是否仍然需要提供胶水代码以允许使用Unicode支持的任何语言?
我非常感谢您提供有关这些类型如何在幕后工作的任何具体信息,以及有关处理其限制的任何一般最佳实践建议.
我正在努力国际化我的一个工作计划.我正在尝试使用远见以避免可能的问题或重做过程.
我看到了UTF-8,UTF-16和UTF-32的参考文献.我的问题是两部分:
如果UTF-8适用于所有内容,那么我很好奇UTF-16和UTF-32的优点是什么(例如数据库中的特殊搜索功能等)理解应该帮助我完成我的程序设计(和数据库连接) )妥善.谢谢!
我对Unicode中的UTF感到困惑.
有UTF-8,UTF-16和UTF-32.
我的问题是:
什么UTF支持所有Unicode块?
什么是最好的UTF(性能,大小等),为什么?
这三个UTF有什么不同?
什么是字节顺序和字节顺序标记(BOM)?
谢谢
我在几个stackoverflow的答案中读到,当从Cp1252(又名Windows-1252;它们是相同的,不是吗?)转换为UTF-8时,某些字符不能直接映射(或者甚至是"不可映射的"),例如:https://stackoverflow.com/a/23399926/2018047
有人可以对此有所了解吗?这是否意味着如果我将源代码从cp1252批量/批量转换为utf-8,我会得到一些最终会成为垃圾的字符?
我在MongoDB中插入了一个init文件:
db.User.insert({ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "Österreich" }})
Run Code Online (Sandbox Code Playgroud)
如果我用db.User.find()调用此条目,那么我得到以下内容:
{ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "�sterreich" } }
Run Code Online (Sandbox Code Playgroud)
带有特殊字符的单词"�sterreich不正确.
有没有人知道我在mongodb可以做些什么才能解决这个问题?
string-formatting utf special-characters mongodb spring-data
我正在尝试使用转换xml为HTML xslt.我java.xml.transform在java中使用这个.它工作正常,直到我碰到一些xml.它说以下错误.
[Fatal Error] :1:1: Content is not allowed in prolog.
javax.xml.transform.TransformerConfigurationException:
javax.xml.transform.TransformerConfigurationException:
javax.xml.transform.TransformerException:
org.xml.sax.SAXParseException: Content is not allowed in prolog.
Run Code Online (Sandbox Code Playgroud)
所以我确保在xml声明之前没有字符.我甚至使用解决方案http://forums.sun.com/thread.jspa?messageID=10324562#10324562处理BOM
仍然没有运气,它只发生在一个xml.我甚至在编辑器中打开了xml并将其保存在带utf-8编码的文件中.这真让我抓狂.任何的想法?
更新:当您为xsl文件指定了错误的路径并且发现了文件未找到异常时,您会收到此错误.(这是我的情况.它可能对某人有所帮助.感谢您的回复)
我想str_word_count()在UTF-8字符串上使用.
这在PHP中安全吗?在我看来它应该是(特别是考虑到没有mb_str_word_count()).
但是在php.net上,有很多人通过展示他们自己的"多字节兼容"版本的功能来混淆水.
所以我想我想知道......
鉴于str_word_count简单地计算由" "(空格)分隔的所有字符序列,它应该在多字节字符串上是安全的,即使它不一定知道字符序列,对吧?
UTF-8中是否有等效的'空格'字符,它们不是ASCII " "(空格)?#
这是我猜的问题所在.
简短版本:
如果我想写一个无错误的程序,可以安全且可能有效地执行UTF-8/16/32编码操作,我应该遵守哪些规则?
我特别想知道的东西列在长版下面.
长版:
在我的业余生涯中,我学到了很多C++,但直到今天我还没有尝试完全理解字符编码和语言环境.我可以想象,像内存管理有其规则,使您的程序安全,没有泄漏和不可预测的行为,所以他们有字符编码.Inb4:我已经完成了关于这个主题的研究,一直在浏览cppreference并学习了很多新的类,函数和库,但是如果没有足够的解释,我就无法完全理解它.此外,我找不到任何好的而不是过时<locale>的诀窍.所以,继续前进 - 如果我不得不使用标准库字符串编写多语言应用程序:
std::string 用UTF-8?std::wstring (真的不太了解它)std::u16string 用UTF-16?std::u32string 用UTF-32?????????等等?当我们存储UTF-8编码字符时会发生什么变化std::string?它们是否仅限于一个字节的ASCII字符,还是可以是多字节的?
当我执行以下操作时会发生什么?
std::string s = u8"foo";
s += 'x';
Run Code Online (Sandbox Code Playgroud)wchar_t和其他多字节字符类型有什么区别?是wchar_t字符或wchar_t字符串文字能够存储UTF编码的?
根据标题,我问的是C++语言的最新特性 - 来自C++ 17,C++ 14和C++ 11标准.
编辑:
很少有人指出,上面的一些问题是一个非常大的主题,值得单独提问.TODO:添加问题的链接.
我有一个简单的问题-是什么样的区别UTF-8,UTF-16和UTF-32?我知道,编码字符串有不同的尺寸,但什么是UTF-16和UTF-32呢?Should't UTF-8能够正确地处理所有的语言?怎么UTF-7适合这个?
编辑
好吧,我比较了解整个事情的技术方面,但我仍然没有看到我应该使用的原因,UTF-16而不是UTF-8在我的应用程序中.所以我的问题是 - 其他编码的实际用法是什么UTF-8呢?
我怎样才能做到这一点?我是Java和Android的新手,我遇到了上述问题.当我将表情符号粘贴到xml文件中时,它会显示一个白色方块和另一个"复制"下一个字符的奇怪字符.
关于如何解决这个问题的任何想法?