html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app
https://github.com/simonw/sqlite-utils/issues/507#issuecomment-1297859539,https://api.github.com/repos/simonw/sqlite-utils/issues/507,1297859539,IC_kwDOCGYnMM5NW8PT,7908073,2022-11-01T00:40:16Z,2022-11-01T00:40:16Z,CONTRIBUTOR,"Ideally people could fix their data if they run into this issue.
If you are using filenames try [convmv](https://linux.die.net/man/1/convmv)
```
convmv --preserve-mtimes -f utf8 -t utf8 --notest -i -r .
```
maybe this script will also help:
```py
import argparse, shutil
from pathlib import Path
import ftfy
from xklb import utils
from xklb.utils import log
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser()
parser.add_argument(""paths"", nargs='*')
parser.add_argument(""--verbose"", ""-v"", action=""count"", default=0)
args = parser.parse_args()
log.info(utils.dict_filter_bool(args.__dict__))
return args
def rename_invalid_paths() -> None:
args = parse_args()
for path in args.paths:
log.info(path)
for p in sorted([str(p) for p in Path(path).rglob(""*"")], key=len):
fixed = ftfy.fix_text(p, uncurl_quotes=False).replace(""\r\n"", ""\n"").replace(""\r"", ""\n"").replace(""\n"", """")
if p != fixed:
try:
shutil.move(p, fixed)
except FileNotFoundError:
log.warning(""FileNotFound. %s"", p)
else:
log.info(fixed)
if __name__ == ""__main__"":
rename_invalid_paths()
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1430325103,