0.0
The project is in a healthy, maintained state
extend faker for chinese data faker
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 0
 Project Readme

FakerZextend

Gem Version License: MIT

A Ruby gem that extends the popular Faker library with Chinese-specific fake data generators — valid 18-digit resident ID cards, uniform social credit codes, bank card numbers with Luhn check digits, Chinese zip codes, company names, and mixed Chinese text.

仓库地址: https://github.com/bluesaiz/faker_zextend

特性 Features

  • 18 位中国居民身份证号(含真实校验位算法)
  • 18 位统一社会信用代码(含 9 位组织机构代码 + 加权校验位)
  • 19 位银行卡号(Luhn 算法校验,覆盖 10 家主流银行 BIN)
  • 12 位银行联行号
  • 6 位中国大陆邮政编码
  • 中文公司名(自 CSV 词库随机组合)
  • 混合中文/数字/字母文本,可选特殊符号

所有模块在加载时自动将 Faker::Config.locale 设为 zh-CN,因此原生 Faker::Name.nameFaker::Address.full_addressFaker::PhoneNumber.cell_phone 等同样返回中文数据。

安装 Installation

将下面这行加到你的 Gemfile 中:

gem 'faker_zextend'

然后执行:

bundle install

或直接安装:

gem install faker_zextend

快速开始 Quick Start

require 'faker_zextend'

Faker::Chinese::IDNumber.id_number             # => "14030019600512831X"
Faker::Chinese::UniSocialCode.uni_social_code # => "91100000X001TEST0A"
Faker::Chinese::Bank.bank_card_no             # => "6230621234567890123"
Faker::Chinese::Bank.union_code               # => "102100000001"
Faker::Chinese::Zip.zip                       # => "100089"
Faker::Chinese::Company.name                  # => "杭州阿里巴巴网络科技有限公司"
Faker::Chinese::Text.random_text(20)          # => "北京shanghai58XY..."
Faker::Chinese::Text.random_text_with_special(20)

由 gem 设置的 Faker::Config.locale = 'zh-CN' 会同时作用于原生 Faker:

Faker::Name.name              # => "李明"
Faker::Address.full_address   # => "上海市浦东新区张江路 88 号"
Faker::PhoneNumber.cell_phone # => "13912345678"
Faker::Internet.email         # => "test@example.cn"
Faker::Internet.url           # => "http://www.example.cn"

模块详解 Module Reference

Faker::Chinese::IDNumber

生成符合 GB 11643-1999 标准的 18 位身份证号。

# 完全随机(6 位地区码 + 8 位生日 + 3 位顺序码 + 1 位校验码)
Faker::Chinese::IDNumber.id_number
# => "430482199203157218"

# 指定地区码(必须是 6 位有效行政区划码)
Faker::Chinese::IDNumber.id_number("110105")
# => "11010519880101123X"

生日范围:1960-01-01 ~ 2020-12-30。校验位使用 ISO 7064:1983 MOD 11-2 权重算法。

Faker::Chinese::UniSocialCode

生成符合 GB 32100-2015 的 18 位统一社会信用代码。

Faker::Chinese::UniSocialCode.uni_social_code
# => "91100008MA5XYZ1A2K"

结构:登记管理部门代码 (1) + 机构类别代码 (1) + 行政区划码 (6) + 组织机构代码 (9) + 校验码 (1)。组织机构代码前 8 位从 31 个合法字符随机生成,第 9 位根据加权算法得出。

Faker::Chinese::Bank

# 19 位银行卡号(默认从 10 家银行 BIN 池随机)
Faker::Chinese::Bank.bank_card_no
# => "6213431234567890123"

# 指定 BIN(6 位)
Faker::Chinese::Bank.bank_card_no("622848")  # 农业银行 BIN

# 自定义长度(默认 19)
Faker::Chinese::Bank.bank_card_no(nil, 16)

# 12 位银行联行号
Faker::Chinese::Bank.union_code
# => "313100000001"

支持的银行 BIN:

银行 BIN
工商银行 623062
中国银行 621343
建设银行 622676
招商银行 410062
中信银行 433680
光大银行 622663
民生银行 622622
交通银行 621335
平安银行 622989
农业银行 622848

最后一位使用 Luhn 算法校验。

Faker::Chinese::Zip

Faker::Chinese::Zip.zip
# => "200120"

从内置的省/市/区三级 chinese_zip.json 词库中随机抽取一个真实邮编。

Faker::Chinese::Company

Faker::Chinese::Company.name
# => "深圳市腾讯计算机系统有限公司"

名称来自 company_name.csv 词库,约 3.8 万条真实公司名样本。

Faker::Chinese::Text

# 长度 len,混合汉字 + 数字 + 字母,比例随机约 3:1:1
Faker::Chinese::Text.random_text(30)
# => "上海科技有限公司MX8k上海信息..."

# 在 random_text 基础上追加全部特殊符号
Faker::Chinese::Text.random_text_with_special(30)

适合在测试中填充备注、地址、描述等中文字段。

开发 Development

git clone https://github.com/bluesaiz/faker_zextend.git
cd faker_zextend
bundle install

运行测试

bundle exec rspec

测试覆盖所有公共方法(ID 号、统一信用代码、银行卡号、联行号、邮编、公司名、随机文本)的长度与基本结构。

目录结构

faker_zextend/
├── lib/
│   ├── faker_zextend.rb              # 入口:设置 locale + 加载所有 extend
│   └── faker_zextend/
│       ├── version.rb
│       └── extend/
│           └── chinese/
│               ├── id_number.rb
│               ├── uni_social_code.rb
│               ├── bank_card.rb
│               ├── zip.rb
│               ├── company.rb
│               ├── text.rb
│               ├── chinese_zip.json      # 邮编省/市/区词库
│               ├── bank_union_code.json  # 联行号词库
│               └── company_name.csv      # 公司名词库
├── spec/                              # RSpec 测试
├── faker_zextend.gemspec
└── README.md

打包

rake build

产物会输出到 pkg/faker_zextend-<version>.gem

发布到 RubyGems:

rake release

依赖 Dependencies

  • Ruby >= 2.3.0
  • faker >= 3.x

贡献 Contributing

  1. Fork 仓库
  2. 创建特性分支 (git checkout -b feature/awesome-thing)
  3. 提交更改 (git commit -m 'Add awesome thing')
  4. 推送分支 (git push origin feature/awesome-thing)
  5. 创建 Pull Request

欢迎补充新模块:车牌号、ISBN、组织机构代码、营业执照号等。词库更新也欢迎提 PR。

许可 License

MIT © 2021 saidev

仓库 Repository

https://github.com/bluesaiz/faker_zextend