Karunaratne, 30, was appointed stand-in captain for Sri Lanka’s surprise 2-0 series win in South Africa this month.
The left-hander has scored eight centuries in 60 Tests for his country.
“It’s a great coup to have him here,” Hampshire director of cricket Giles While said. “Dimuth is a perfect fit for us as a top-order batsman.”
Karunaratne replaced injured Dinesh Chandimal as skipper for the Tests in South Africa, and also played in series against England, New Zealand and Australia this winter.
He will be available for 10 County Championship fixtures and the 50-over One-Day Cup for Hampshire.
“Dimuth isn’t involved in Sri Lanka’s white-ball side, so he’ll be with us during that period of the World Cup,” White told BBC Radio Solent.
“Availability and a top-order batsman were the key factors when we were looking for an overseas player, so we’re delighted to welcome him for what will be his first taste of county cricket.
“He’s in great form this winter and just led his country to an historic series win away from home.” – BBC