首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML文件中的一行最大长度限制是什么?

XML文件中的一行最大长度限制是什么?
EN

Stack Overflow用户
提问于 2019-05-08 07:46:28
回答 1查看 3.3K关注 0票数 1

attribute of vector xml。在我的例子中,51k字符似乎是一个上限,而29k则可以。无论如何,我想它与manifeststringstyleattrdrawablelayout等特定类型的xml无关,我确信这是Android项目中任何xml的一个普遍限制。

所以,我很好奇,的限制是什么(我指的是在Android中允许使用一行字符的确切数量),以及为什么AndroidStudio在矢量导入时不应用它?看起来谷歌自己不知道这个限制,也可能是一个等级的限制。

请不要向我指出长弦是不好的-我确实意识到这一点,它不会取消我的问题。

各位,请仔细阅读我的问题和其他问题,这样你们可能会认为这些问题是骗人的!我的问题没有答案。

Android strings.xml length所以问题有着完全不同的含义。Asker询问是否有一种在strings.xml中获取字符串计数的方法。此外,我的问题与strings.xml无关,而是与任何xml文件有关。

Android IndexOutOfBound Exception for resource getString绝对是另一个例外/问题,对我的问题绝对没有给出任何答案。同样,我的问题与strings.xml完全无关。

What is the maximum amount of data that a String can hold in java?不是我要问的,它是关于String类限制的。即使它是相关的,那么限制也是关于Integer.MAX/2(因为Unicode需要2个字节来编码一个字符),所以它在任何方面都不是51k字符。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-08 09:02:04

我猜读到你的问题的时候,这个限制应该在29k到51k之间,但是被剪成了一个逻辑数字。

我也许已经通过测试找到了答案。正如您所说,一个字符存储在两个字节上。所以29k字符是58k字节,51k是102 k字节。“逻辑”限制为65536,因为它是2^16。因此,以字符为单位的限制为2^16 /2或2^15,即为32768。

我测试了如何在我的string.xml中放置字符串(基本上是‘a’的长行)

代码语言:javascript
复制
<string name="length_test32000">(32 000 a)</string>
<string name="length_test32767">(32 767 a)</string>
<string name="length_test32768">(32 768 a)</string>
<string name="length_test32769">(32 769 a)</string>
<string name="length_test33000">(33 000 a)</string>

然后我试着记录它们的大小:

代码语言:javascript
复制
String test32k = getString(R.string.length_test32000);

String test32k767 = getString(R.string.length_test32767);
String test32k768 = getString(R.string.length_test32768);
String test32k769 = getString(R.string.length_test32769);

String test33k = getString(R.string.length_test33000);

Log.i("tag", "32000 : "+test32k.length());
Log.i("tag", "32767 : "+test32k767.length());
Log.i("tag", "32768 : "+test32k768.length());
Log.i("tag", "32769 : "+test32k769.length());
Log.i("tag", "33000 : "+test33k.length());

以下是研究结果:

代码语言:javascript
复制
I/tag: 32000 : 32000
I/tag: 32767 : 32767
I/tag: 32768 : 16
I/tag: 32769 : 16
I/tag: 33000 : 16

从32768开始,它似乎被截断了,所以我记录了里面的内容

代码语言:javascript
复制
Log.i("tag", "32768 : "+test32k768.length() + " content : " + test32k768);

结果是:

代码语言:javascript
复制
I/tag: 32768 : 16 content : STRING_TOO_LARGE

最大字符似乎是32767 (2^15 - 1)字符.我没有找到任何官方医生这么说,但这是我在测试时发现的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56035887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档