有个任务要做多语言切换功能,然后需要用到json资源包,参数对应显示的数据,一个简体资源包一个繁体的,由于中文会乱码,需要对显示的数据进行unicode编码,UTF-8也可以。手动录入的话太麻烦了,既要来回切换简繁输入,又要在线对数据进行编码,再复制粘贴到json文件中,工作量太大而且一直复制粘贴太傻逼了,所以就考虑通过写个窗体小程序实现。

想要的原始数据是参数和对应简体的json数据格式的txt文件。

格式如下:

{"query": "查询","url": "地址","page": "页码","address": {"street": "科技园路.","city": "江苏苏州","country": "中国"}
}

想要的输出是两个转换后的txt文件,格式如下:

{" query": "\u67e5\u8be2"," url": "\u5730\u5740"," page": "\u9875\u7801"," address": {" street": "\u79d1\u6280\u56ed\u8def\u002e"," city": "\u6c5f\u82cf\u82cf\u5dde"," country": "\u4e2d\u56fd"}
}

用到的方法总结:

一、C# winform写入和读取TXT文件

string str;
str=this.textBox1.Text;
StreamWriter sw = new StreamWriter(Application.StartupPath +"\\txtwriter.txt", false);
sw.WriteLine(str);
sw.Close();//写入string str;
StreamReader sr = new StreamReader(Application.StartupPath +"\\txtreader.txt", false);
str = sr.ReadLine().ToString();
sr.Close();
this.textBox1.Text = str;///读取

二、简繁体切换

添加引用Microsoft.VisualBasic

string strSimple = Microsoft.VisualBasic.Strings.StrConv(strTraditional, VbStrConv.SimplifiedChinese, 0);
string strTraditional = Microsoft.VisualBasic.Strings.StrConv(strSimple, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0); 

三、json对象的转换及拼接

添加引用Newtonsoft.Json

JObject jo = (JObject)JsonConvert.DeserializeObject(str);foreach (var a in jo){if (!string.IsNullOrEmpty(simpleStr)){simpleStr += ",";diffStr += ",";}else{simpleStr += "{";diffStr += "{";}simpleStr += "\" " + a.Key + "\":";diffStr += "\" " + a.Key + "\":";if (a.Value.HasValues){simpleStr += "{";diffStr += "{";bool isfirst = true;JObject childJo = (JObject)JsonConvert.DeserializeObject(a.Value.ToString());foreach (var b in childJo){if (!isfirst){simpleStr += ",";diffStr += ",";}else{isfirst = false;}simpleStr += "\" " + b.Key + "\":";diffStr += "\" " + b.Key + "\":";simpleStr += "\"" + String2Unicode(b.Value.ToString()) + "\"";diffStr += "\"" + String2Unicode(Microsoft.VisualBasic.Strings.StrConv(b.Value.ToString(), Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0)) + "\"";}simpleStr += "}";diffStr += "}";}else{simpleStr += "\"" + String2Unicode(a.Value.ToString()) + "\"";diffStr += "\"" + String2Unicode(Microsoft.VisualBasic.Strings.StrConv(a.Value.ToString(), Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0)) + "\"";}}simpleStr += "}";diffStr += "}";

四、unicode编码

using System.Text.RegularExpressions;

/// <summary>/// 字符串转Unicode/// </summary>/// <param name="source">源字符串</param>/// <returns>Unicode编码后的字符串</returns>internal static string String2Unicode(string source){var bytes = Encoding.Unicode.GetBytes(source);var stringBuilder = new StringBuilder();for (var i = 0; i < bytes.Length; i += 2){stringBuilder.AppendFormat("\\u{0}{1}", bytes[i + 1].ToString("x").PadLeft(2, '0'), bytes[i].ToString("x").PadLeft(2, '0'));}return stringBuilder.ToString();}/// <summary>/// Unicode转字符串/// </summary>/// <param name="source">经过Unicode编码的字符串</param>/// <returns>正常字符串</returns>internal static string Unicode2String(string source){return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(source, x => Convert.ToChar(Convert.ToUInt16(x.Result("$1"), 16)).ToString());}

五、过程中出现的错误

读取txt文件时中文乱码,StreamReader sR = new StreamReader(filePath, System.Text.Encoding.Default)

采用默认编码或者Encoding.GetEncoding("gb2312")可解决问题

json里面value还有数据的时候需要对里面的再进行反序列化成对象进行处理,不能直接处理。

最后就是犯了很多细节上的小问题,另外很多知识点都不熟悉了

最后说一下多语言切换用到的资源包不要这样弄,因为数据的key和value都很难看懂,最好的办法是在json文件保存的时候编码给设置为unicode编码或UTF-8编码,这样就不会出现乱码了,而且key值就可以设置为中文,比较容易看懂

对json数据进行处理的小程序总结相关推荐

  1. 微信小程序数据拼接_微信小程序 数据预拉取

    数据预拉取 预拉取能够在小程序冷启动的时候通过微信后台提前向第三方服务器拉取业务数据,当代码包加载完时可以更快地渲染页面,减少用户等待时间,从而提升小程序的打开速度 . 使用流程 1. 配置数据下载地 ...

  2. 上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...

    现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据 每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成 1.添加data变量 编辑rec ...

  3. 微信小程序数据拼接_微信小程序使用原生WebSokcet实现断线重连及数据拼接

    以前做小程序为了应急找了个插件去链接WebSokcet,文章传送门. 回过头在新项目中再次使用时出现了些许问题,不一一赘述.遂决定好好用一下原生的WebSokcet. 一.说明 1.小程序原生的Web ...

  4. 微信小程序数据拼接_微信小程序用户数据解密算法Java版

    打开官方文档,开心~ 腾讯爸爸竟然给提供了解密算法 然而我下载解压后人傻了 可能鹅厂没养Java程序猿吧 那就看这C++改造吧 public class AnthCodeVerify { privat ...

  5. 从mysql读取数据保存成excel_小程序读取excel表格数据,并存储到云数据库

    最近一直比较忙,答应大家的小程序解析excel一直没有写出来,今天终于忙里偷闲,有机会把这篇文章写出来给大家了. 老规矩先看效果图 效果其实很简单,就是把excel里的数据解析出来,然后存到云数据库里 ...

  6. 微信小程序下拉刷新列表onPullDownRefresh;微信小程序上划加载列表onReachBottom;uni-app微信小程序下拉加载数据;uni-app微信小程序上划页面加载数据

    需求:微信小程序列表加载有两种方式,分别是按住页面下拉加载数据数据(触发onPullDownRefresh)和直接上划滚动页面到底部加载数据(触发onReachBottom函数). 本文主要是使用上划 ...

  7. uni-app微信小程序uni.getLocation获取位置;authorize scope.userLocation需要在app.json中声明permission;小程序用户拒绝授权后重新授权

    需求:点击按钮获取当前微信位置,以及点击拒绝授权后,下次点击还可以拉起授权窗口: 拒绝授权后重新拉起授权操作: 直接授权操作: 一.问题1:报authorize scope.userLocation需 ...

  8. 为啥我的页面模板的from提交不了数据_4-9【微信小程序全栈开发课程】意见反馈(四)--提交反馈信息

    1.创建后端操作文件 先在后端server/controllers文件夹中创建操作文件createopinion.js,用来将从前端页面提交的数据,插入到opinions表中,创建完之后,页面目录如下 ...

  9. uniapp 统计_“uni统计”震撼来袭 - 1份报表,掌握全景数据(App及各种小程序)

    `uni-app` 发布以后,广受开发者欢迎.可是开发者发布了多端应用后,却为统计数据发愁了. 到处接SDK,每天登录不同的报表,想知道今日全平台一共新增了多少用户,还得自己手工加...... &qu ...

最新文章

  1. Nature: 拟南芥微生物组功能研究1培养组学—高通量细菌分离培养鉴定
  2. 在eclipse中使用JDBC连接MySQL5.7.24
  3. Appdelegate跳转到指定tabbaritem
  4. 属性子集选择的基本启发方法_图网络基本属性
  5. tensorflow tf.nn.max_pool_with_argmax返回最大池化对应索引值
  6. 定义mysql字段的编码模式_在 mysql 中 定义 数据库,表,列时,设定的各个的编码格式。...
  7. linux 怎么配置apache,在Linux下配置Apache Web服务
  8. 在项目中常用到的几个注解@JsonInclude、@JsonFormat、@DateTimeFormat
  9. 干趴面试官系列 | 请你简述一下Kafka中的分区分配
  10. ant 构建_有用的Ant构建标签
  11. python制作各种条形图
  12. matlab 流星雨,dijkstra算法及其matlab实现
  13. [js插件]分享一个文章内容信息提示插件Colortip
  14. SQL常见错误及处理方法
  15. 机器人动力学与控制学习笔记(十一)————机器人凯恩方程动力学建模
  16. 安科瑞变电站综合自动化系统在变电站的应用-Susie 周
  17. 多机器人系统实验室汇总
  18. 添加地图注记出现的问题
  19. STM32cubemx教程及STM32入门(四)串口通信
  20. PPT内置宏教程——放映时用控件切换动态图表

热门文章

  1. jq weui 日期年月日时分秒得设置(二个弹窗)
  2. 零信任与区块链:身份的中心化和去中心化
  3. 移动通信基础(1)比特、比特率、符号速率、码片速率、波特率、码元
  4. android一键清理后台,Android 一键清理、内存清理功能实现
  5. ECP认证咨询,ECP自我审核表体现了ECP政策前四个模块的结构和布局
  6. HNU数据结构与算法szh
  7. cctype头文件 cstring头文件
  8. 腾讯的一笔画游戏(正多边形)
  9. String to jpg
  10. 驾驶人科目一模拟考试系统破解(驾照模拟考试软件破解)纪要