piapia123
zh

全角半角转换

文本

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

输入法在全角模式下打出来的字母数字(`ABC123`)在程序里往往对不上 —— 账号、金额、验证码、命令行参数都只认半角。这个工具按方向整体转换:全角字母、数字、符号归一半角,或者反过来。中文标点与英文标点的边界是按 Unicode 码位划的,不是按「看起来像不像中文」划的,这一点决定了哪些字符会变、哪些不会,是使用这个工具最容易困惑的地方,下面单独有一条讲。另外,`。`、`、`、`「」` 与日文的半角形式共用码位,所以片假名转换默认关着。

功能

  • 全角字母、数字、符号归一半角,或反过来转成全角
  • 覆盖全角 ASCII(U+FF01–U+FF5E)与表意空格 U+3000
  • 覆盖全角货币符号:¥ £ ¢ ₩ 等七个(它们不在全角 ASCII 那一段里,最容易被漏掉)
  • 可选同时转换半角 / 全角片假名,`ハ` + `゙` 会合并成一个 `バ`
  • 中文标点 `。` `、` `「」` `《》` 原样保留 —— 它们没有半角形式
  • 汉字、emoji 与其他非 ASCII 字符原样保留
  • 两个方向互为逆运算,转过去再转回来能回到原样
  • 结果实时更新,可整块复制
  • 全部在浏览器本地完成,文本不外传

使用方法

  1. 选方向:全角转半角,或半角转全角
  2. 把文本粘进输入框
  3. 日文文本需要动片假名时,勾上那一个选项
  4. 复制结果

常见问题

为什么我的中文逗号被换成了英文逗号,句号却没有?
因为边界是按 Unicode 码位划的,不是按「像不像中文」划的。`,`(U+FF0C)、`:`(U+FF1A)、`?`(U+FF1F) 就在全角 ASCII 那一段里(U+FF01–U+FF5E)—— 它们确实是 `,` `:` `?` 的全角形式,所以会被转换。而 `。`(U+3002)、`、`(U+3001)、`「」`(U+300C/300D)、`《》`(U+300A/300B) 在另一段,是独立的中文标点,没有半角形式,所以原样保留。这不是可勾选的附加项:它就是「全角转半角」的定义。需要只改字母数字、把标点留着的话,这个工具做不到。
「同时转换片假名」那一项为什么要单独勾,还默认关着?
因为 `。`(U+3002)、`、`(U+3001)、`「」`、`・` 与日文的半角形式 `。` `、` `「」` `・` 共用码位。一旦打开,中文文本里的句号会变成半角的小圈、顿号变成小小的顿点 —— 对中文用户来说那是纯粹的破坏,而且看着像工具坏了。所以默认关着:中文文本保持关闭,日文文本再打开。打开后 `ハ`+`゙` 这类会正确合并成一个 `バ`,小写假名与长音符也各有对应。
全角空格是什么?
就是 U+3000「表意空格」,宽度等于一个汉字,中文排版里用它来对齐。英文的空格是 U+0020,宽度只有它的一半。转成半角时 U+3000 变成普通空格,转成全角时普通空格变成 U+3000 —— 这就是为什么半角转全角之后,文本看起来「变宽了」。
为什么 ¥ 也被转换了?
因为 `¥`(U+FFE5) 是 `¥`(U+00A5) 的全角形式。它不和 `$`(U+FF04) 在同一段里 —— 后者能靠「码位减 0xFEE0」平移成 `$`,而 `¥` 的半角形式在拉丁扩展区,只能单独列出来。这类符号一共七个(`¥ £ ¢ ₩ ¬  ̄ ¦`),漏掉它们的表现是「金额里的 ¥ 没转、旁边的 $ 转了」,看着像时灵时不灵。
文本会被上传吗?
不会。转换全在浏览器内存里完成,页面不发送任何请求,断网也能用。

相关工具