Java String对中文长度的计算问题

Java String对中文长度的计算问题  


2010-07-30 13:36:38|  分类: java |字号 订阅
Java String对中文长度的计算问题


今天在农行测试系统,碰到个很恶心的问题。


我通过socket发到银行服务器的报文,总是后面少了几位,银行截取字符串是按照我在报文头传过去的报文总长度计算的。


然后怀疑我发过去的报文长度计算不对。但是这个是一个很简单的string.length()函数计算出来的长度,应该不会有错。


继续找原因,发现是Java和银行端程序对于中文的长度计算算法不同,造成这种错误。


如果一个中文字符串:  银行


Java中如果这样计算长度:
String str = "银行";
System.out.println(str.length());
那么得出的长度是2


但是银行服务器端中文是按照byte流的长度来计算的,所以计算出来的长度是4


最后在程序中,不能使用Java String的length方法来计算报文总长度,需要把它转换成为 byte数组来计算数组总长度。


System.out.println(str.getBtyes().length);


问题解决


原文链接 http://feng10251225.blog.163.com/blog/static/63122798201063013638937/

### 如何用Python在2025下载视频 尽管时间设定在未来,但基本的技术原理不会发生显著变化。以下是关于如何使用Python实现音视频下载的核心方法。 #### 准备工作 为了完成这一目标,需要先安装必要的库并配置开发环境。通常情况下,`requests` 和 `BeautifulSoup` 是用于网络请求和HTML解析的主要工具[^1]。如果涉及更复杂的反爬机制,则可能需要用到 `selenium` 或其他模拟浏览器行为的库[^2]。 #### 获取视频链接 并不公开其API接口供第三方随意调取内容,因此要绕过此限制需分析网页版或移动应用中的数据传输过程。通过抓包工具(如Fiddler、Charles),可以找到加载视频时所使用的URL模式以及所需的参数列表[^3]。 #### 编写脚本 下面是一个简单的代码框架来演示整个流程: ```python import requests def download_douyin_video(video_url, save_path): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get(video_url, headers=headers) if response.status_code == 200: with open(save_path, 'wb') as f: f.write(response.content) print(f"Video downloaded successfully to {save_path}") else: print("Failed to download video") video_url = input("Enter the Douyin video URL: ") save_path = "./output.mp4" download_douyin_video(video_url, save_path) ``` 上述代码片段展示了如何发送HTTP GET 请求到指定地址,并保存返回的数据流至本地磁盘上。 需要注意的是,在未来几里,随着技术的进步和服务条款的变化,可能会遇到更加严格的访问控制措施或者新的加密算法保护媒体资源。届时则需要调整策略应对新增的安全特性。 另外值得注意的一点是,虽然可以通过这种方式获取分享出来的无水印版本,但这并不代表鼓励违反版权规定的行为;相反应该尊重原创作者劳动成果,合法合理地使用相关内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值