全/半角 与 中/英文标点
输入文本,同屏看 4 种转换结果(一键检查中文输入法误打的全角字符 / 中文标点)
全角↔半角/数字/字母/标点
输入文本,同屏看 4 种转换结果(一键检查中文输入法误打的全角字符 / 中文标点)
· 全角字符:占两格宽(如 A 1 ,),Unicode 范围 U+FF01 ~ U+FF5E;全角空格 U+3000
· 半角字符:占一格宽(A 1 ,),即标准 ASCII U+0021 ~ U+007E
· 常见问题:中文输入法默认全角 / 中文标点,写代码时容易混入;导致 SQL 报错、URL 失败、JSON 解析错误。统一转半角 + 英文标点是清洗关键
· 中英文标点对照:,↔, · 。↔. · !↔! · ?↔? · :↔: · ;↔; · ()↔() · ""''↔"" ''
了解工具定位 · 使用场景 · 对比优势
将全角字母、数字、标点一键转换为半角,或反向操作。处理包含全角字符的文本、清理从网页或 PDF 复制来的混乱格式、统一代码中的标点符号,几秒完成。所有转换在浏览器内完成,文本不上传服务器。
程序员从英文文档复制代码到中文 IDE 时,经常混入全角括号、冒号或空格,导致编译报错。本工具一键将全角标点、字母、数字转为半角,省去逐行排查语法错误的 5-10 分钟,尤其适合团队提交前批量检查代码文件。
求职者用 Word 或在线模板写简历时,中英文混排常出现全角英文逗号(,)或半角中文句号(.),HR 打开后格式错乱。本工具将整段文字统一为全角中文标点 + 半角英文数字,让简历在任意系统上显示一致,减少因排版问题被筛掉的风险。
数据分析师从网页或 PDF 复制表格到 Excel 时,数字和标点常被转成全角(如“100”或“,1”),导致公式计算报错或排序异常。本工具批量将全角数字、字母、逗号转为半角,30 秒完成原本需要手动替换 50 次的重复操作。
运营人员在 CMS 后台编辑链接时,不小心输入全角问号(?)或等号(=),导致生成的分享链接 404。本工具快速检查 URL 中的全角字符并替换为半角,避免链接失效带来的流量损失,尤其适合电商大促期间批量生成短链的场景。
研究生在 LaTeX 或 Word 中撰写论文时,引用参考文献的标点(如“.”“,”)可能混入全角,导致引用格式不符合期刊要求。本工具一键规范英文摘要和参考文献中的标点、数字、字母为半角,中文正文保留全角标点,省去逐条检查格式的 20 分钟。
| 维度 | 本工具 | 竞品 A(在线文本工具) | 传统方法(手动替换) |
|---|---|---|---|
| 数据隐私 | 纯浏览器处理,文本不上传服务器 | 文本需上传至服务器处理 | 完全本地,无数据外泄风险 |
| 处理速度 | 毫秒级实时转换 | 取决于网络延迟,通常 1-3 秒 | 取决于文本长度,数分钟到数小时 |
| 离线可用 | 支持,加载后完全离线运行 | 不支持,必须联网 | 支持,完全离线 |
| 大小限制 | 无限制,浏览器内存决定 | 通常有单次字符数限制(如 10 万字符) | 无限制,取决于人工耐力 |
| 批量处理 | 支持,可一次性粘贴大段文本 | 支持,但受限于上传大小 | 不支持,需逐段手动操作 |
| 标点符号处理 | 全角/半角标点智能转换 | 通常仅转换字母数字,标点需单独设置 | 需人工识别并逐个替换,易遗漏 |
| 操作复杂度 | 一键点击,自动识别转换方向 | 需选择转换模式(全→半/半→全) | 需使用查找替换功能或手动输入 |
| 学习成本 | 零门槛,打开即用 | 需了解网站功能布局 | 需掌握文本编辑器的替换功能 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| Hello,World! | Hello, World! | 典型场景:全角英文字母和标点转半角 |
| 1234567890 | 1234567890 | 典型场景:全角数字转半角 |
| ,。!?【】()“”‘’;: | ,.!?[]()""'';: | 典型场景:全角中文标点转半角英文标点 |
| Hello, World! | Hello,World! | 边界 case:半角转全角,字母和标点全转换 |
| (首尾全角空格) | (首尾半角空格) | 边界 case:全角空格(U+3000)转半角空格(U+0020) |
| abc123!@# | abc123!@# | 易错 case:全角混合字符(字母+数字+符号)一次转换 |
| 中文全角标点,应该保留。 | 中文全角标点,应该保留。 | 易错 case:中文文本中的全角标点(逗号句号)不转换 |
| URL:https://example.com | URL: https://example.com | 边界 case:全角 URL 转半角后可直接点击访问 |
hello worldhello world全角空格(U+3000)在代码、URL、配置文件中会被视为非法字符,导致解析失败或意外换行。半角空格(U+0020)才是标准分隔符。
123 + 456123 + 456全角数字(U+FF10-U+FF19)在 JavaScript、Excel、Shell 中不被识别为数值,会直接报错或当作字符串拼接。转换后再运算。
test@example.comtest@example.com域名和邮箱地址只接受半角字母(a-z)和半角点(.)。全角字母(U+FF21-U+FF3A)会被 DNS 或 SMTP 拒绝,无法送达。
{"name": "张三,年龄:25"}{"name": "张三, 年龄: 25"}全角逗号(,)和全角冒号(:)在 JSON/XML 中不是合法分隔符,会导致解析器抛出 SyntaxError。仅半角逗号、冒号、花括号有效。
https://example.com/路径?参数=值https://example.com/%E8%B7%AF%E5%BE%84?%E5%8F%82%E6%95%B0=%E5%80%BCURL 标准(RFC 3986)只允许 ASCII 字符。全角问号(?)、等号(=)会被浏览器或服务端当作非法字符,导致 400 Bad Request。必须使用百分号编码。
(123)(123)正则表达式中的分组、捕获、字符集都依赖半角括号(()[]{})。全角括号(U+FF08/U+FF09)会被当作普通文本,无法实现分组/捕获逻辑。
他说:“你好”他说: "你好"全角双引号(“ ”)在大多数编程语言中不是字符串定界符,会导致字符串提前结束或语法错误。使用半角双引号(")或单引号(')包裹。
2023-01-012023-01-01全角减号(- U+FF0D)不是标准连字符(- U+002D),在 JavaScript Date.parse、Excel 日期格式、文件名排序中会被视为非法字符,导致解析失败。
公式推导 · 流程图解 · 依据出处
全角字符码位 = 半角字符码位 + 0xFEE0
全角字符码位 — 全角字符的 Unicode 码点(十进制)半角字符码位 — 半角字符的 Unicode 码点(十进制)0xFEE0 — 全角与半角字符的固定偏移量(65248)将半角字母 'A'(U+0041,十进制 65)转换为全角 'A':65 + 0xFEE0 = 65 + 65248 = 65313(U+FF21)。结果即为全角大写 A。反向转换:全角 'A'(U+FF21,十进制 65313)减去 0xFEE0 得 65,即半角 'A'。
适用于 ASCII 可打印字符(U+0021~U+007E)与对应全角字符(U+FF01~U+FF5E)之间的转换。不适用于汉字、标点符号(如逗号、句号)及非 ASCII 字符,这些字符有独立码位映射规则。依据 Unicode 标准(ISO/IEC 10646)。
3 种主流语言 · 复制即用
import unicodedata
# 全角→半角(字母、数字、标点)
def fullwidth_to_halfwidth(text: str) -> str:
result = []
for char in text:
# 全角字母/数字/标点(FF01-FF5E)映射到半角(21-7E)
code = ord(char)
if 0xFF01 <= code <= 0xFF5E:
result.append(chr(code - 0xFEE0))
# 全角空格(3000)→ 半角空格(0020)
elif code == 0x3000:
result.append(chr(0x0020))
else:
result.append(char)
return ''.join(result)
# 半角→全角(字母、数字、标点)
def halfwidth_to_fullwidth(text: str) -> str:
result = []
for char in text:
code = ord(char)
# 半角字母/数字/标点(21-7E)映射到全角(FF01-FF5E)
if 0x0021 <= code <= 0x007E:
result.append(chr(code + 0xFEE0))
# 半角空格(0020)→ 全角空格(3000)
elif code == 0x0020:
result.append(chr(0x3000))
else:
result.append(char)
return ''.join(result)
# 示例
text = "Hello, World!123"
print(fullwidth_to_halfwidth(text)) # Hello, World!123
half = "Hello, World!123"
print(halfwidth_to_fullwidth(half)) # Hello, World!123package main
import (
"fmt"
"strings"
)
// FullToHalf 全角→半角(字母、数字、标点)
func FullToHalf(s string) string {
var builder strings.Builder
for _, r := range s {
switch {
case r >= 0xFF01 && r <= 0xFF5E:
builder.WriteRune(r - 0xFEE0)
case r == 0x3000:
builder.WriteRune(0x0020)
default:
builder.WriteRune(r)
}
}
return builder.String()
}
// HalfToFull 半角→全角(字母、数字、标点)
func HalfToFull(s string) string {
var builder strings.Builder
for _, r := range s {
switch {
case r >= 0x0021 && r <= 0x007E:
builder.WriteRune(r + 0xFEE0)
case r == 0x0020:
builder.WriteRune(0x3000)
default:
builder.WriteRune(r)
}
}
return builder.String()
}
func main() {
text := "Hello, World!123"
fmt.Println(FullToHalf(text)) // Hello, World!123
half := "Hello, World!123"
fmt.Println(HalfToFull(half)) // Hello, World!123
}// 全角→半角(字母、数字、标点)
function fullToHalf(text) {
return text.replace(/[\uFF01-\uFF5E\u3000]/g, (char) => {
const code = char.charCodeAt(0);
if (code === 0x3000) return String.fromCharCode(0x0020);
return String.fromCharCode(code - 0xFEE0);
});
}
// 半角→全角(字母、数字、标点)
function halfToFull(text) {
return text.replace(/[\u0021-\u007E\u0020]/g, (char) => {
const code = char.charCodeAt(0);
if (code === 0x0020) return String.fromCharCode(0x3000);
return String.fromCharCode(code + 0xFEE0);
});
}
// 示例
const text = 'Hello, World!123';
console.log(fullToHalf(text)); // Hello, World!123
const half = 'Hello, World!123';
console.log(halfToFull(half)); // Hello, World!1238 个高频疑问