【问题标题】:How to best calculate the bytes of text in a TextArea如何最好地计算 TextArea 中的文本字节
【发布时间】:2011-04-05 13:11:53
【问题描述】:

我需要找到一种方法来准确计算特定文本区域内文本的字节大小。我在 .Net 中工作,所以我可以访问这些库,但我更喜欢 Javascript 解决方案。每个字符值多少字节?什么是最有效的计数和乘法方法?还是我完全错过了更好的方法?

编辑:我正在尝试确定已粘贴到 textarea 中的一段 Javascript 的下载大小。我能找到的最接近这个的是http://bytesizematters.com/。我不想仅仅提升他们的代码,特别是因为我不完全理解它。

【问题讨论】:

  • 根据编码,所有字符可以是相同的字节数,但不一定(我不太确定哪些编码的字节大小是多少;我相信 ASCII 每个字符使用 1 个字节) ,所以我不建议只计算和相乘
  • 这个相关问题在 Borgar 的回答中包含一个很好的代码示例:stackoverflow.com/questions/1240408/…
  • ASCII、Win 1252 和 ISO-8859-1 每个字符有 1 个字节,UTF-8 每个字符有 1、2、3 或 4 个字节,UTF-16 每个字符有 2 或 4 个字节。您需要哪种编码的字节大小?
  • 我实际上正在做的是让用户粘贴 Javascript 以确定下载大小,如果该 Javascript 被放置在他们的网站上。
  • 这取决于应用到它的压缩。

标签: javascript asp.net html textarea


【解决方案1】:

我想你的答案就在这里

计算.aspx:

<body>
    <form id="form1" runat="server">
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    </form>
</body>

然后双击设计视图上的按钮以在代码隐藏文件(Calculate.aspx.cs)中定义事件处理程序,然后将以下代码添加到方法中

    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = StrToByt(TextBox1.Text).Length.ToString();
    } 

最后,您必须在同一个文件中定义刚刚调用“StrToByt”的神秘方法,定义此方法,该方法将字符串 str 作为参数并通过“System.Text.UTF8Encoding”对象设置其编码然后将输出作为字符串返回,我们将通过 Length 属性进行计数

        public static byte[] StrToByt(string str)
    {
        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        return encoding.GetBytes(str);
    }

PS:我研究了一下,发现常见的编码是 UTF-8,但如果你认为不是这样,你可以编辑编码对象而不是“System.Text.UTF8Encoding”,你可以输入“System.Text. "您会在 Text 命名空间中找到所有可用的编码类型

如果您仍然感到困惑,我可以发布完整的代码,希望对您有所帮助! =)

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 2010-12-08
    • 2011-10-22
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多